当前位置: 首页 > 知识库问答 >
问题:

不一致js Ban命令问题

东方华晖
2023-03-14

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

C:\用户\nalfo\OneDrive\桌面\不和谐机器人\NetSync\命令\审核\ban.js:15let{user}=message.mentions.members.first () || message.guild.members.get(参数[0]);^

TypeError:无法对(message.indications.members.first(…)|的属性“user”进行分解message.guild.members.get(…)'因为它是未定义的。反对。在客户端运行(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)位于客户端。在MessageCreateHandler处发出(events.js:323:22)。在WebSocketPacketManager上处理(C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\Discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)。在WebSocketConnection上处理(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)。在websocket上的消息(C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\Discord.js\src\client\websocket\WebSocketConnection.js:299:17)。在WebSocket上的消息(C:\Users\nalfo\OneDrive\Desktop\Discord Bot\NetSync\node\u modules\ws\lib\event target.js:120:16)。在接收端发出(events.js:311:20)。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.
          }


    }
}
}

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

共有1个答案

欧阳衡
2023-03-14

这里的错误是,在下面的一行中,您不能“解构”消息的结果。提到。成员。第一条消息。公会成员。get(args[0]),因为结果是未定义的

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

是否可能是消息的结果。提到。成员。第一个()消息。公会成员。get(args[0])是否未定义?在尝试从返回的对象获取用户密钥之前,我没有看到您检查未定义的

下面是我将要做的,而不是在赋值后从user检查错误值:replace

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);
}

 类似资料:
  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!

  • 我得到了一个unban命令代码,在控制台中出现以下错误: (节点:9348)未处理的PromisejectionWarning:TypeError:无法读取未定义的at对象的属性“member”。在客户端执行(C:\Users\19nik\Documents\GitHub\bot project\commands\unban.js:9:22)。(C:\Users\19nik\Documents\G

  • 上面的代码正在运行。 我没有得到任何错误,但我也希望机器人显示他们是afk的原因,当他们提到。有人能帮忙吗?

  • 我一直在用discord编程一个机器人。py(重写分支)和我想添加一个ban命令。bot仍然没有禁止该成员,只是显示了一个错误: 它将禁止ping用户并确认它确实禁止了ping

  • 它在给定时间仅显示一个命令 如果我写或它不会工作,但如果我写它会输出 如果我切换前面的字符,它将变为或不起作用,但是工作和说再见

  • 我目前正试图将静音功能编程到discord机器人上。它已启用服务器权限“静音成员”。 这是每当我调用mute命令时运行的代码: 因此,此代码的连续调用应该切换为静音,但message.channel.send.每次都会发送false,表明该成员从未静音。我不清楚静音功能是如何与不和谐一起工作的。我在某处读到它是基于角色的——如果是这样,那么setMute()命令的意义是什么? 文档:https:/