如何检查成员是否有角色

How do I check if member have role

如何检查 message.author 是否具有 admin 角色?

或者有什么方法可以检查某个成员的角色是否高于另一个成员?

获取用户的角色

  • 你可以跟角色名比较

    message.member.roles是一个集合。这意味着您只需直接在集合中查找角色即可。像这样:

    if(message.member.roles.find(r => r.name === "Admin") || message.member.roles.find(r => rname === "AnotherRole"))

  • 或者您可以直接使用Map.has方法检查成员是否具有特定角色。这将检查键,而不是值,因此您必须改用角色的 ID。

    message.member.roles.has(adminRole.id)

    message.member.roles.has(modRole.id)

将一个角色与另一个角色进行比较

你可以简单地使用这种代码(官方文档中有描述)

if(role_of_author > role_of_user_to_be_banned)

但请注意,一个用户可以拥有多个角色,因此请根据您的用例调整此条件。


您可以参考documentation了解更多信息。

如果某个角色存在于 Member 的角色列表中,您可以使用 discord.utils.get 获取该角色。

from discord.utils import get

if get(member.roles, name="admin"):
    # has role
else:
    # does not have role

要确定在层次结构中的位置,您可以比较 Member 的最高角色

if member1.top_role > member2.top_role:
    # member 1 is higher than member 2