@dvrr
Новичок, еще только учусь

Как вывести роли discord сервера, кроме заблокированных?

Всем привет, хочу вывести роли discord сервера через api, кроме заблокированных. (скрин) Как это можно сделать?
66634126ea9a9207910172.png
Мой python код:
def get_guild_roles(guild_id):
    headers = {'Authorization': 'Bot '+ BOT_TOKEN}
    url = API_BASE_URL+'/guilds/{}/roles'.format(guild_id)
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        roles = response.json()
        filtered_roles = [role for role in roles if role['name'] != '@everyone' and not role['managed'] and not role['hoist']]
        return filtered_roles
    else:
        return None
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
В discord.py ты можешь просто сравнивать роли. Но ты пытаешься сделать это вручную...
Если заглянуть в исходники либы, то можно увидеть, что там проверяется свойство position. Причем вроде как меньший position означает меньшие привилегии, с поправкой на то что роль @everyone меньше всех.
Тогда решением твоей задачи будет:
1. Определить список ролей твоего токена на рассматриваемом сервере.
2. Определить наибольший position среди этих ролей.
3. Получить список всех ролей на рассматриваемом сервере.
4. Отсеять роли, у которых position больше твоего наибольшего.

Если я напутал и меньший position означает большую роль, то логика примерно та же самое, только меняешь больше на меньше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы