Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js命令问题_Javascript_Discord.js - Fatal编程技术网

Javascript Discord.js命令问题

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

我正在尝试修复我今天遇到的一个错误,错误如下:

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

它以前工作得很好,不知道出了什么问题。这是我的模块导出

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、名称和显示名称。