Discord.js禁止命令问题

问题描述 投票:0回答:1

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

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

TypeError:无法解构以下属性的“用户”'(message.mentions.members.first(...)||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 \ DiscordBot \ NetSync \ node_modules \ discord.js \ src \ client \ websocket \ packets \ handlers \ MessageCreate.js:9:34)在WebSocketPacketManager.handle(C:\ Users \ nalfo \ OneDrive \ Desktop \ DiscordBot \ NetSync \ node_modules \ discord.js \ src \ client \ websocket \ packets \ WebSocketPacketManager.js:108:65)在WebSocketConnection.onPacket(C:\ Users \ nalfo \ OneDrive \ Desktop \ DiscordBot \ NetSync \ node_modules \ discord.js \ src \ client \ websocket \ WebSocketConnection.js:336:35)在WebSocketConnection.onMessage(C:\ Users \ nalfo \ OneDrive \ Desktop \ DiscordBot \ NetSync \ node_modules \ discord.js \ src \ client \ websocket \ WebSocketConnection.js:299:17)在WebSocket.onMessage(C:\ Users \ nalfo \ OneDrive \ Desktop \ Discord Bot \ NetSync \ node_modules \ ws \ lib \ event-target.js:120:16)在WebSocket.emit(events.js:311:20)在Receiver.receiverOnMessage(C:\ Users \ nalfo \ OneDrive \ Desktop \ DiscordBot \ 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.
          }


    }
}
}

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

javascript discord.js
1个回答
0
投票

这里的错误是由于您的结果是"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])的结果是否可能不确定或以某种方式为空?我看不到您尝试从返回的对象中获取用户密钥之前先检查是否为null。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.