javascript - Discord.js 禁止命令问题

标签 javascript discord.js

我正在尝试修复今天遇到的错误,错误是这样的:

C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\commands\moderation\ban.js:15 let { user } = message.mentions.members.first() || message.guild.members.get(args[0]); ^

TypeError: Cannot destructure property 'user' of '(message.mentions.members.first(...) || message.guild.members.get(...))' as it is undefined. at Object.run (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\commands\moderation\ban.js:15:11) at Client. (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\index.js:36:34) at Client.emit (events.js:323:22) at MessageCreateHandler.handle (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34) at WebSocketPacketManager.handle (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:108:65) at WebSocketConnection.onPacket (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:336:35) at WebSocketConnection.onMessage (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:299:17) at WebSocket.onMessage (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_modules\ws\lib\event-target.js:120:16) at WebSocket.emit (events.js:311:20) at Receiver.receiverOnMessage (C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node_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.
          }


    }
}
}

我隐藏了一些代码,因为它们并不重要。但我仍然不确定整个命令出了什么问题。

最佳答案

此处的错误指出,在下面的行中您不能 "destructure" message.mentions.members.first() || message.guild.members.get(args[0])的结果,因为结果是 undefined .

let { user } = message.mentions.members.first() || message.guild.members.get(args[0]);

有没有可能message.mentions.members.first()的结果和message.guild.members.get(args[0])undefined ?我没有看到您在检查undefined在尝试从它们返回的对象中获取用户 key 之前。

这是我要做的,而不是检查 user 中的虚假值。分配后:替换

if (!user)
    return message.channel.send(novalidmember);

在文件中进一步添加一些内容(在分配 user 之前),如下所示:

if (message.mentions.members.first() == undefined || message.guild.members.get(args[0]) == undefined)
{
    return message.channel.send(novalidmember);
}

关于javascript - Discord.js 禁止命令问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60514841/

相关文章:

javascript - 当输入字段具有特定值时,如何更改 div 的类?

node.js - Discord.js - guildMemberUpdate 不会被调用,除非机器人用户发生更改

javascript - 将数组值传递给 addlistener 函数

javascript - JavaScript 中的最大日期时间值

javascript - 如何让最后一个字母闪烁?

javascript - 将权限转换为数字 Discord.js

javascript - 仅具有特定角色的命令

javascript - magic 8ball 机器上的命令问题

node.js - Discord.js 错误 - 找不到模块

javascript - 关于 db.collection ('cafes' ).orderBy ('city' ).onSnapshot() 的问题