Ошибка в 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 )