Discord Bot Kick&Ban命令不起作用

时间:2020-09-18 09:33:54

标签: javascript discord discord.js

我正在学习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(`${prefix}ping`)) {
        message.channel.send('Pong.');
    } else if (message.content.startsWith(`${prefix}beep`)) {
        message.channel.send('Boop.');
    }
    else if (message.content === `${prefix}server`) {
        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); 

1 个答案:

答案 0 :(得分:0)

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

第二,message.mentions.members.first返回一个ID,如果我没有记错的话,则必须将其放入方法message.guild.member的参数中。

这看起来像是

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

例如,我的kick命令看起来像 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,因为它已经使用了一年,并且我没有对其进行升级,但是逻辑在这里。)