Как я могу проверить, есть ли у участника роль - PullRequest
0 голосов
/ 17 апреля 2019

Как я могу проверить, имеет ли message.author роль admin?

Или есть ли способ проверить, есть ли у члена более высокая роль, чем у другого?

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Вы можете использовать discord.utils.get, чтобы получить роль, если она существует в списке ролей Member.

from discord.utils import get

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

Чтобы определить положение в иерархии, вы можете сравнить самые высокие роли Member s

if member1.top_role > member2.top_role:
    # member 1 is higher than member 2
1 голос
/ 17 апреля 2019

Чтобы получить роль (и) пользователя

  • Вы можете сравнить с именем роли

    message.member.roles - это коллекция.Это означает, что вы просто ищете роль непосредственно в коллекции.Например:

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

  • Или вы можете напрямую проверить, есть ли у члена определенная роль с помощью метода Map.has.При этом будут проверяться ключи, а не значения, поэтому вместо них вам придется использовать идентификаторы ролей.

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

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

Для сравнения роли с другой

Вы можете просто использовать этот вид кода (описан в официальной документации)

if(role_of_author > role_of_user_to_be_banned)

Но позаботьтесь о том, чтобы один пользователь мог иметь несколько ролей,поэтому адаптируйте это условие в соответствии с вашим вариантом использования.


Для получения дополнительной информации см. документацию .

...