如何设置无法踢出更高角色的成员-Discord.js

时间:2020-09-10 04:45:29

标签: discord.js

我需要朋友使用Discord.js对此代码进行一些帮助。我似乎不太可能编写此代码,我想要的是:

当人/成员的角色高于机器人时,机器人将发送一条消息,表明机器人无法踢出具有较高角色的成员,但是当机器人角色以下的人被踢出时

错误是: 该机器人无法踢出该机器人角色之上或之下的所有成员

有什么解决办法吗?也许我想念一些东西

        const rolepositionerror = new Discord.MessageEmbed()
        .setDescription('You can\'t kick members with equal or higher position!')
        .setColor("FF0000")

            const targetMember = message.mentions.members.first() || message.guild.members.cache.get(args[0])
 
            const authorHighestRole = message.member.roles.highest
            const targetHighestRole = targetMember.roles.highest
        if(targetHighestRole = authorHighestRole) return message.channel.send(rolepositionerror)

        if(targetMember) {
                targetMember.kick()
                message.channel.send(userkicked)
        }

1 个答案:

答案 0 :(得分:0)

Discord.js的GuildMember具有一个名为GuildMember#kickable的属性,如果可以踢用户,该属性将返回true,您要做的就是将其添加到代码中:


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

if(targetMember) {
  if (targetMember.kickable) {
    // If you can kick the member, then...

    targetMember.kick()
    message.channel.send(userkicked)
  } else {
    // If you can't kick the member, then...

    const roleError = new Discord.MessageEmbed()
      .setDescription(
        "This member can't be kicked!\n" +
        "Check if they have a higher role than the bot and if the bot has permissions!"
      )
      .setColor("FF0000");
    return message.channel.send(roleError)
  }
}

有关更多信息,请查看以下链接: