Ошибка в discord.py

Столкнулся с одной проблемой при создании нужного мне списка. Читал доки и не могу найти нужную строку, которая отвечает за эту функцию, а именно то, как ее изменить.

Код:

@client.command()
async def tracking(ctx):
    server_members = ctx.guild.members
    data1 = "\n".join([member.mention for member in server_members if ctx.guild.get_role(703596629894365213) in member.roles])
    
    emb = discord.Embed(title="Администрация сервера", color=discord.Color.purple())
    emb.set_author( name = client.user.name, icon_url = client.user.avatar_url )
    emb.add_field( name = '`Следящая администрация`', value = data1 )
    await ctx.send( embed = emb )

Если в ctx.guild.get_role() один ID роли, то все прекрасно работает, нежели если туда закинуть два ID роли.

Ошибка:

Command raised an exception: TypeError: get_role() takes 2 positional arguments but 3 were given

В чем проблема?


Ответы (1 шт):

Автор решения: SkyRacerQ_

На самом деле, всё довольно проще, чем ты думаешь. Здесь вовсе не нужно использовать метод get_role(). Необходимо для каждой роли из списка member.roles выполнить проверку, является ли ID роли таким, какой нам нужен. Пример виден в коде.

Код:

@client.command()
async def tracking(ctx):
    server_members = ctx.guild.members
    data1 = "\n".join([member.mention for member in server_members for role in member.roles if role.id == 703596629894365213])
    emb = discord.Embed(title="Администрация сервера", color=discord.Color.purple())
    emb.set_author( name = client.user.name, icon_url = client.user.avatar_url )

    emb.add_field( name = '`Следящая администрация`', value = data1 )
    await ctx.send( embed = emb )
→ Ссылка