discord bot ban/kick 命令无效

discord bot ban/kick command is not working

我发出了禁止和踢出命令,但我使用了然后我的机器人崩溃并出现错误 [message.guild.member 不是函数]

这是我的禁止命令代码

  if (message.content.startsWith(prefix + 'ban')) {
    const user = message.mentions.users.first();
    if (user) {
      if (message.member.hasPermission('BAN_MEMBERS')) {
        message.guild.member(user).ban('Vous avez été ban par un admin').then(() => {
          message.channel.send(`${user.username} a été ban !`);
        }
        ).catch(err => {
          console.log(err);
        }
        );
      } else {
        message.channel.send('Vous n\'avez pas la permission de ban !');
      }
    } else {
      message.channel.send('Vous devez mentionner un utilisateur !');
    }
  }
});

这是我的 kick 命令代码

client.on('message', message => {
  if (message.content.startsWith(prefix + 'kick')) {
    const user = message.mentions.users.first();
    if (user) {
      const member = message.guild.member(user);
      if (member) {
        if (message.member.hasPermission('KICK_MEMBERS')) {
          member.kick('Vous avez été kick par un admin').then(() => {
            message.reply(`${user.tag} a été kick !`);
          }).catch(err => {
            message.reply('Je ne peux pas kick cet utilisateur !');
            console.log(err);
          });
        } else {
          message.reply('Vous n\'avez pas la permission de kick !');
        }
      } else {
        message.reply('Cet utilisateur n\'est pas dans le serveur !');
      }
    } else {
      message.reply('Vous devez mentionner un utilisateur !');
    }
  }
});

这样做:

message.guild.members.cache.get(user).ban()
message.guild.members.cache.get(user).kick()

将权限行更改为此...

message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)

将禁止行更改为此...

user.ban({ reason:'Vous avez été ban par un admin' })
.then(() => {
    message.channel.send(`${user.username} a été ban !`);
}
client.on('messageCreate', async (message) => { //since you're using v13, *message* is deprecated. So you need to change it to *messageCreate*
   if(message.content.startsWith(prefix + "kick")) { //You can do ${prefix}kick too.
      if(!message.member.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) return message.reply("You can't use this command") //This line code is for when the member using this command. It will return when permissions isn't detected.
      if(!message.guild.me.permissions.has(Permissions.FLAGS.BAN_MEMBERS)) return message.reply("I can't use this command.") //This is for when the bot missing its permissions.
      const member = message.mentions.members.first(); //users is not going to work.
      if(!member) return message.reply("Who are you going to kick?") //This line code is for when the member didn't find or pinged.
      if(!member.bannable) return message.reply("I can't ban this person") // This is for the person that is not bannable.
      await member.ban({ reason: 'Your reply'}) //You need to await, so it can fetch the member.
   }
})

您也可以使用他们的 ID 来禁止使用

const member = message.mentions.members.first() || message.guild.members.fetch(args[0]) || message.guild.members.cache.get(args[0])

您也可以添加自己使用的原因

const reason = args.slice(1).join(" ")
member.ban({
   reason: reason
})

并使用嵌入

const reason = args.slice(1).join(" ")
member.ban({
   reason: reason
})

const embed = new MessageEmbed()
.setDescription(`${reason}`)
.setColor('RANDOM')

message.channel.send({embeds: [embed]})

除了代码行,为了防止任何错误,您可以使用||。例如:

const reason = args.slice(1).join(" ") || "No Reason" //This is to prevent any errors for your embed

是的,您还可以使用 === 来防止您不小心 ping 自己时出现错误。

if(!member.id === message.author.id) return message.reply("your_message");

您需要在 args

之前添加此代码行
 const args = message.content.trim().split(/ +/g);

所以应该是这样

 const args = message.content.trim().split(/ +/g);
 const reason = args.slice(1).join(" ") || "No Reason"