繁体   English   中英

Discord.js v13 kick 命令不起作用有人可以帮我吗?

[英]Discord.js v13 kick command not working can someone help me?

嗨,我为我的不和谐机器人创建了一个踢命令

这是代码

client.on("message", (message) => {
    if (message.content.startsWith("!kick")){

    }
    
         var utenteKick = message.mentions.members.first();
         
         if(!message.member.permissions.has("KICK_MEMBERS")){
             message.channel.send("Non hai il permesso");
             return;
         }

         if(!utenteKick.kickable) {
             message.channel.send("Il bot non ha il permesso");
             return;
         }

         if(!utenteKick){
             message.channel.send("Non hai menzionato nessun utente");
             return;
         }

         utenteKick.kick()
          .then(() => message.channel.send("<@" + utenteKick + "> è stato kickato"))
        
})

这是错误:

C:\Users\Admin\Desktop\Discord bot\MiningMC\index.js:50
         if(!utenteKick.kickable) {
                        ^

TypeError: Cannot read properties of undefined (reading 'kickable')
    at Client.<anonymous> (C:\Users\Admin\Desktop\Discord bot\MiningMC\index.js:50:25) 
    at Client.emit (node:events:527:28)
    at MessageCreateAction.handle (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\discord.js\src\client\actions\MessageCreate.js:34:18)
    at module.exports [as MESSAGE_CREATE] (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\discord.js\src\client\websocket\WebSocketManager.js:351:31)
    at WebSocketShard.onPacket (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\ws\lib\event-target.js:199:18)
    at WebSocket.emit (node:events:527:28)
    at Receiver.receiverOnMessage (C:\Users\Admin\Desktop\Discord bot\MiningMC\node_modules\ws\lib\websocket.js:1160:20)

有人能帮我吗? 我正在使用 Visual Studio 代码 discord.js 版本 v13 https://github.com/UnsavorySpirit/MiningMC-Bot

在开始使用新的不和谐版本之前,请花一些时间阅读文档,版本之间存在一些差异。 消息事件已重命名为 messageCreate,以使库符合 Discord 的命名约定。 使用 message 仍然有效,但在您切换之前,您会收到弃用警告。

注意第一行的区别:

- client.on("message", message => { ... });
+ client.on("messageCreate", message => { ... });

在对它进行任何操作之前,您应该检查utentekick是否未定义:

client.on("messageCreate", (message) => { 
    if (message.content.startsWith("!kick")){

    //} <- this was also a problem : move it to the end
    
         var utenteKick = message.mentions.members.first();
         
         if(!message.member.permissions.has("KICK_MEMBERS")){
             message.channel.send("Non hai il permesso");
             return;
         }

         if(!utenteKick){ // this before the other
             message.channel.send("Non hai menzionato nessun utente");
             return;
         }
         
         if(!utenteKick.kickable) {
               message.channel.send("Il bot non ha il permesso");
               return;
         }

         utenteKick.kick()
         .then(() => message.channel.send("<@" + utenteKick + "> è stato kickato"))
        
    } // this must be here
})

编辑:

大括号也有问题(踢某人的代码不在条件范围内,每条消息都会触发踢)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM