【问题标题】:How do I check if member have role如何检查成员是否有角色
【发布时间】:2019-09-07 16:02:24
【问题描述】:

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

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

【问题讨论】:

    标签: bots discord discord.py-rewrite


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你最好的开发者助手我非常感谢像你这样经验丰富的优秀开发者的帮助:)
    【解决方案2】:

    获取用户的角色

    • 您可以与角色名称进行比较

      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了解更多信息。

    【讨论】:

    • 谢谢你,先生,但是我如何检查他试图禁止的成员是否具有某个角色高于他的角色,就像管理员试图禁止高级管理员一样然后机器人会说“你不能禁止比你角色更高的成员
    • 你能告诉我如何检查被禁止的成员是否有特定的角色
    • @racoon 我如何检查编写命令的成员是否具有特定角色??
    • 检查它就像写消息的用户是否具有管理员角色,机器人发送给你的管理员,如果写命令的成员有成员,机器人发送你的成员
    • @racoon 什么都没试过,因为我什至不知道要写什么代码
    猜你喜欢
    • 2020-10-12
    • 2020-07-08
    • 1970-01-01
    • 2020-09-14
    • 2018-04-02
    • 1970-01-01
    • 2021-04-06
    • 2021-01-02
    • 1970-01-01
    相关资源
    最近更新 更多