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

Posted

技术标签:

【中文标题】如何设置无法踢出具有更高角色的成员 - Discord.js【英文标题】:How do I set an unable to kick members with higher role - Discord.js 【发布时间】:2020-12-28 13:19:30 【问题描述】:

我需要使用 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】:

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)
  


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

Discordjs.guide - Guide - Kicking a member Discordjs.guide - Guide - Permissions Discord.js - Docs - GuildMember property Discord.js - Docs - GuildMember#kickable property

【讨论】:

以上是关于如何设置无法踢出具有更高角色的成员 - Discord.js的主要内容,如果未能解决你的问题,请参考以下文章

如何将某人踢出Google驱动器文件

如何让不和谐的机器人踢出 Java 中的成员?

如何向 Drupal 7 Organic Groups 角色成员发送电子邮件?

DISCO 的角色 - 网络服务

如何检查成员是不是具有特定角色

Discord.js V12 如何显示具有特定角色的所有成员?