Javascript Discord.js命令问题
我正在尝试修复我今天遇到的一个错误,错误如下: C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\commands\moderation\ban.js:15 让{user}=message.indications.members.first | | message.guild.members.getargs[0]; ^ TypeError:无法分解的属性“user” '消息。提及。成员。首先|| message.guild.members.get…“未定义。 在Object.run C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\commands\moderation\ban.js:15:11 在客户端。C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\index.js:36:34 在Client.emit events.js:323:22 在MessageCreateHandler.handle C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34 在WebSocketPacketManager.handle C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:108:65 在WebSocketConnection.onPacket C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\discord.js\src\client\websocket\WebSocketConnection.js:336:35 在WebSocketConnection.onMessage C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\discord.js\src\client\websocket\WebSocketConnection.js:299:17 在WebSocket.onMessage C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\ws\lib\event target.js:120:16 在WebSocket.emit events.js:311:20 在Receiver.receiveOnMessage C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\ws\lib\websocket.js:789:20 它以前工作得很好,不知道出了什么问题。这是我的模块导出Javascript Discord.js命令问题,javascript,discord.js,Javascript,Discord.js,我正在尝试修复我今天遇到的一个错误,错误如下: C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\commands\moderation\ban.js:15 让{user}=message.indications.members.first | | message.guild.members.getargs[0]; ^ TypeError:无法分解的属性“user” '消息。提及。成员。首先|| message.guild.members.g
module.exports = {
name: "ban",
category: "moderation",
description: "Bans the mentioned user.",
usage: "<imputs>",
run: (client, message, args) => {
let { user } = message.mentions.members.first() || message.guild.members.get(args[0]);
if(!message.member.hasPermission("BAN_MEMBERS")){
message.channel.send(permission);
} else {
if(!user)
return message.channel.send(novalidmember);
if(!user.bannable)
return message.channel.send("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");
let reason = args.slice(1).join(' ');
if(!reason) reason = "No reason provided";
user.ban({
reason: `${reason}`
})
const embed = new Discord.RichEmbed()
The embed is hidden.
let logchannel = message.guild.channels.find(x => x.name === `logs`);
if (!logchannel){
Sends a message to the channel.
Logs the ban in a file.
} else {
Sends a message to the channel.
Logs ban in the log channel.
}
}
}
}
我隐藏了一些代码,因为它们并不重要。但是我仍然不确定整个命令的错误是什么。这里的错误是在下面的一行中提到,您无法查看message.indications.members.first | | message.guild.members.getargs[0]的结果,因为结果未定义 让{user}=message.indications.members.first | | message.guild.members.getargs[0]; 是否有可能message.investments.members.first和message.guild.members.getargs[0]的结果未定义?我没有看到您在尝试从返回的对象获取用户密钥之前检查未定义 下面是我将要做的,而不是在赋值后从用户那里检查错误值:replace 如果使用者 返回message.channel.sendnovalidmember; 在分配用户之前,请在文件中进一步添加以下内容:
if (message.mentions.members.first() == undefined || message.guild.members.get(args[0]) == undefined)
{
return message.channel.send(novalidmember);
}
对不起,我听不懂你说的话?检查它是否未定义意味着这样的事情:如果!用户返回消息.channel.sendnovalidmember;?如果我的回答不清楚,请道歉-在尝试将message.indications.members.first或message.guild.members.getargs[0]分配给用户之前,您应该先检查message.indications.members.first或message.guild.members.getargs[0]是否为null。出现这个问题是因为javascript不知道如何使用user,因为这两条语句返回的是未定义的。@PrinceBunBun981当您让{user}=。。。您告诉它您想要拉出对象的user元素,因此让{user}=message.indications.members.first在功能上与让user=message.indications.members.first.user相同。问题是,memeber.user在Discord.js中是一个真实的东西,但它与公会失去了联系,因此所有公会功能(如bannable)都不存在于该级别,因此未定义。@PrinceBunBun981我更新了我的答案,希望有更合理的解释-我建议你阅读什么是解构,为什么JS对你给出的指令不满意…@PrinceBunBun981语法存在的原因是你可以一次提取多个属性。让{id,name,displayname}=message.indications.members.first;将为您提供3个变量,包括id、名称和显示名称。