Python Discord Bot - Получить роли пользователей на другом сервере - PullRequest
1 голос
/ 26 апреля 2020

Таким образом, я могу проверить роли пользователя на сервере с помощью следующего кода:

        #Check Admin:
        playerRoles = []
        for x in message.author.roles:
            playerRoles.append(str(x))
        if "Admin" in playerRoles:

Но я хочу, чтобы бот мог определять роли, которые они выполняют на сервере , отличном от того, где была выдана команда . Я хочу, чтобы команда могла быть отправлена ​​посредством DMing ее боту, поэтому, очевидно, я не могу использовать message.author.roles , потому что у пользователя нет ролей в DM, у него есть роль на сервере.

Вот что я пробовал:

        #Check Roles:
        playerRoles = []
        #target the user manually to get his roles in the event of a DM
        pepeServer = client.get_guild(guildID)
        targetUser = discord.utils.get(pepeServer.members, id=userID)
        for x in targetUser.roles:
            playerRoles.append(str(x))

Это возвращает ошибку в строке "для x в targetUser.roles:"

AttributeError: 'NoneType «У объекта нет атрибута» роли »

Я думаю, что« targetUser », который он получает, не относится к ролям. Feelsbadman. Как получить роли пользователя на сервере по команде, введенной в DM?

Спасибо за помощь

1 Ответ

1 голос
/ 26 апреля 2020

AttributeError: 'NoneType' object has no attribute 'roles' означает, что targetUser равно None.

Так что ваш discord.utils.get(pepeServer.members, id=userID) ничего не возвращает.

Проверьте сервер и идентификатор пользователя.

...