Новый discord.py - переписать пользователя здесь.
Я пишу бота, который имеет интерфейс разногласий: он подключен к нескольким серверам (гильдия), и в настоящее время мне нужна система авторизации, чтобы ограничить его использование.
Я думал, что смогу получить все роли пользователей и проанализировать их позже, когда потребуется. Итак, я сделал:
@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
(обновление) ADDENDUM:
Мне нужно проверять роли пользователя даже в личных сообщениях, поэтому необходимо получить mut_guilds