Discord bot Kick and Ban 命令不起作用

Posted

技术标签:

【中文标题】Discord bot Kick and Ban 命令不起作用【英文标题】:Discord bot Kick & Ban command not working 【发布时间】:2021-01-05 05:43:06 【问题描述】:

我正在学习 javascript,并决定编写一个 Discord 机器人,但我无法让它踢或禁止。我尝试了几种不同的代码,但除了这个之外,它们都给了我错误。唯一的问题是当我不和谐地执行命令时它什么也不做。同样,如果这是一个菜鸟错误,我很抱歉,但我正在学习

这是我的代码

const Discord = require('discord.js');
const  prefix, token  = require(`./config.json`);


const client = new Discord.Client();

client.once('ready', () => 
    console.log('Im online now');
);



client.on('message', message => 
    if (message.content.startsWith(`$prefixping`)) 
        message.channel.send('Pong.');
     else if (message.content.startsWith(`$prefixbeep`)) 
        message.channel.send('Boop.');
    
    else if (message.content === `$prefixserver`) 
        message.channel.send(`Server: $message.guild.name\ there is: $message.guild.memberCount in the server`);
    
    else if (message.content === 'no u') 
        message.channel.send('no u')
    
    
)

client.on('message', async (message) => 
    if(message.content.startsWith(`+kick)`)) 
    if(message.member.hasPermission('KICK_MEMBERS')) 
    
      if(!message.mentions.users.size)
          return message.reply("Who am I supposed!");
         
       var user= message.mentions.members.first();
       message.channel.send('<@user.id> has just been kicked');
       user.kick();
     
      else 
              message.reply(message.channel.send('You cant do that'));
          
          
  
)


client.on('message', async (message) => 
    if(message.content.startsWith(`+ban)`)) 
    if(message.member.hasPermission('BAN_MEMBERS')) 
    
      if(!message.mentions.users.size)
          return message.reply("Who am I supposed to ban?!");
         
       var user= message.mentions.members.first();
       message.channel.send('<@user.id> Has just been banned');
       user.ban();
     
      else 
              message.reply(message.channel.send('you cant do that'));
          
          
  
)


client.login(token); 

【问题讨论】:

每个机器人不应有多个 Client#message 事件。 这有点猜测,但您的代码会检查命令 +ban)+kick)。你确定额外的')'是故意的吗?因为这样你就必须使用+kick) @Toten#1234的命令。我猜你希望命令是+kick @Toten#1234,但这只是猜测 【参考方案1】:

首先,欢迎来到 JavaScript 和 discord.js 世界!如果您是初学者,我强烈建议您阅读official discord.js guide。

其次,message.mentions.members.first返回一个ID,如果我没记错的话,你必须把它放在方法message.guild.member的参数中。

看起来像 这个:

let kickUser = message.guild.member(message.mentions.users.first());

例如,我的踢命令看起来像 this:

exports.run = async (bot, message, args) => 

    let kUser = message.guild.member(message.mentions.users.first());
    if (!kUser) return message.channel.send("Je n'ai pas trouvé l'utilisateur");
    let kReason = args.join(" ").slice(22);
    if (!message.member.hasPermission("KICK_MEMBERS")) return message.channel.send("Permission refusée");
    if (kUser.hasPermission("KICK_MEMBERS")) return message.channel.send("Cette personne ne peut pas être kick !");

    if (!kReason) return message.channel.send("Tu n'a pas mentionné de raison");

    let kickEmbed = new Discord.MessageEmbed()
        .setDescription("Kick")
        .setColor("#ff750c")
        .setThumbnail(kUser.user.avatarURL())
        .addField("Utilisateur kick", `$kUser ID : $kUser.id`)
        .addField("Kick par", `<@$message.author.id> ID: $message.author.id`)
        .addField("Channel", message.channel)
        .addField("Date", message.createdAt)
        .addField("Raison", kReason);

    let kickchannel = bot.channels.cache.find(x => x.id === config.discord.modlogChannelID);
    if (!kickchannel) return message.channel.send("Je n'ai pas pu trouver le channel de modération (adm error)");

    message.guild.member(kUser).kick(kReason);
    message.delete();

    kickchannel.send(kickEmbed);
;

希望这会有所帮助! (我的代码可能不适用于新版本的 discord.js,因为它已经使用一年了,我没有升级它,但逻辑在这里)。

【讨论】:

“其次,message.mentions.members.first 返回一个id,如果我没记错的话,你必须把它放在方法message.guild.member的参数中”。不,message.mentions.members.first() 会起作用。

以上是关于Discord bot Kick and Ban 命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章

discord python bot kick 命令

Python discord bot“找不到命令'ban'”错误

代码停止执行 Ban discord bot, python

Discord.js mod bot ban 命令不起作用

discord.py - 如何添加踢/禁止原因?

权限检查 Discord.py 机器人