如何检查成员是否有角色
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
如何检查 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