Вот пример, использующий изрядное понимание списка:
@client.command()
async def list(ctx):
role = discord.utils.get(ctx.guild.roles, name="mute")
muted = [(m.name, m.id) for m in ctx.guild.members if "mute" in [r.name for r in m.roles]]
if len(muted) > 0:
embed = discord.Embed(title="Muted members")
embed.add_field(name="Names", value=f"**{', '.join([i[0] for i in muted])}**",inline=False)
embed.add_field(name="ID", value=f"{', '.join([str(i[1]) for i in muted])}",inline=True)
await ctx.send(embed=embed)
else:
await ctx.send(f"Nobody has the role {role.mention}")
Он составляет список кортежей в формате:
[("name", 112233445566778899), ....
, которые затем извлекаются позже через другой понимание, получение первого элемента каждого кортежа как имени, а второго элемента как идентификатора.
Идентификатор должен быть преобразован в строку, чтобы .join()
работал, следовательно, str(i[1])
.
Каталожные номера: