【问题标题】:Discord bot Kick & Ban command not workingDiscord bot Kick and Ban 命令不起作用
【发布时间】: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(`${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); 

【问题讨论】:

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

标签: javascript discord discord.js


【解决方案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() 会起作用。
猜你喜欢
  • 2020-08-07
  • 2018-03-04
  • 2021-03-01
  • 2021-07-18
  • 2020-11-13
  • 2021-11-19
  • 2021-04-30
  • 2019-07-31
  • 1970-01-01
相关资源
最近更新 更多