Получить список названий всех существующих ролей сервера Discord - Discord.py - PullRequest
0 голосов
/ 06 мая 2020
import discord

def read_token():
    with open("token.txt", "r") as f:
        lines = f.readlines()
        return lines[0].strip()

token = read_token()

client = discord.Client()

@client.event
async def on_message(message):
    guild = client.get_guild(id)
    channels = ['general']

user = guild.roles

if str(message.channel) in channels:
        if message.content == "!role":
            await message.channel.send(user)

client.run(token)

Это дает результат

[<Role id=[confidential] name='@everyone'>, <Role id=707478326872375317 name='test role'>, <Role id=705472652411666482 name='dear'>, <Role id=705472646896418846 name='issue'>, <Role id=705456460024250409 name='pro'>, <Role id=705456411127316540 name='ansh'>, <Role id=705012241426284545 name='gsheet-bot'>]

Вместо этого я хочу получить только имена, а не идентификаторы в списке. Что я могу сделать?

1 Ответ

0 голосов
/ 06 мая 2020

Поскольку user = guild.roles возвращает список, в котором каждый элемент является объектом discord.Role, вы можете получить доступ к атрибуту name объекта discord.Role.

Попробуйте следующее, чтобы получить список имен ролей ( не уверен, почему вы назначаете переменную пользователя, когда она предназначена для ролей):

user = [r.name for r in guild.roles]
...