Как получить роли пользователей в переписывании discord.pyPython

Программы на Python
Ответить
Anonymous
 Как получить роли пользователей в переписывании discord.py

Сообщение Anonymous »

Новый пользователь discord.py — перепишите здесь.

Я пишу бота с интерфейсом Discord: он подключен к более чем одному серверу (гильдии) и в настоящее время мне нужна система аутентификации, чтобы ограничить ее использование.
Я думал, что смогу получить все роли пользователей и проанализировать их позже, когда это необходимо. Я так и сделал:

Код: Выделить всё

    @client.event
async def on_ready():
...
for guild in client.guilds:
for member in guild.members:
for role in member.roles:
if role.name == "Test":
print("USER_ID: %d - ROLE: %s" % (member.id, role.name))
но мне это не нравится. Мне нужно их хранить, и это неэффективно. Также мне нужно обновить фоновую сопрограмму, чтобы проверить, присоединяются ли новые участники или меняют ли роли.
Итак, мой вопрос: есть ли простой способ проверить на лету роли пользователей во взаимных гильдиях при получении сообщения?Прокрутив официальный API, единственный способ узнать взаимные гильдии пользователей — это Profile(), но как бот я получаю запрещенную ошибку, как говорит API.

Код: Выделить всё

    @client.event
async def on_message(message):
...
profile = await message.author.profile()

Код: Выделить всё

discord.errors.Forbidden: FORBIDDEN (status code: 403): Bots cannot use this endpoint
(обновить) ДОПОЛНЕНИЕ:

Мне нужно проверять роли пользователей даже в личных сообщениях, поэтому необходимо получить взаимные_гильдии

Подробнее здесь: https://stackoverflow.com/questions/558 ... py-rewrite
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»