Здесь новый пользователь discord.py-rewrite.
Я кодирую бота с интерфейсом разногласий: он подключен к более чем одному серверу (гильдии), и в настоящее время мне нужна система авторизации, чтобы ограничить ее использование. Я думал, что смогу получить все роли пользователей и проанализировать их позже, когда понадобится. Так я и сделал:
@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
(обновление) ДОБАВЛЕНИЕ:
Мне нужно проверять роли пользователей даже в личных сообщениях, поэтому мне нужно получить own_guilds