Тестирование discord.py для ролей не работает.всегда возвращает ложь - PullRequest
0 голосов
/ 10 июня 2019

Я хочу проверить, есть ли у пользователя одна из двух определенных ролей, но по какой-то причине написанный мной код всегда возвращает false.

Я также попробовал другой подход, который всегда возвращал истину. также не получил ответ на сервере Discord.py Discord

#first approach. always returns false
def isMod(user):
    for role in user.roles:
        if role.id==587614886771687445:
            return True
        elif role.id==587615608279924756:
            return True
    return False



#second approach. always returns true
def isMod(user):
    if discord.utils.get(user.roles, id=587614886771687445) is None and discord.utils.get(user.roles, id=587615608279924756):
        return False
    else:
        return True

Должно возвращаться значение true, если пользователь имеет одну или обе роли с заданным идентификатором, и значение false, если они не имеют.

1 Ответ

0 голосов
/ 11 июня 2019

Я получил код для работы в моей системе.Вы можете попробовать несколько вещей здесь, чтобы исправить это.

  1. Как вы получаете имя пользователя?Попробуйте напечатать имя пользователя примерно так:
@client.event
async def on_message(message):
      if message.content.startswith('$'):
            user = message.author
            print(user)

Введите что-нибудь с помощью $, чтобы вызвать это сообщение.Если пользователь печатается правильно, в следующем шаге попробуйте распечатать роль,

print(user.roles)

. Это должно вернуть итерируемое значение с 'Role id' и 'Name'.Проверьте, правильно ли передаются идентификаторы ролей.

Если проблема не устранена, поделитесь кодом на hastebin или чем-то еще.

...