Несколько результатов в одном и том же Embed | Discord.py - PullRequest
1 голос
/ 30 мая 2020

Как мне включить несколько результатов в одно и то же встраивание?

Вот код, кстати

@client.command()
async def list(ctx):
    role = discord.utils.get(ctx.guild.roles, name="mute")
    for member in ctx.guild.members:
        if role in member.roles:
            embed = discord.Embed(title="Mute members")
            embed.add_field(name="Name", value=f"**{member.name}**",inline=False)
            embed.add_field(name="ID", value=f"{member.id}",inline=True)
            await ctx.send(embed=embed)
            empty = False
    if empty:
        await ctx.send("Nobody has the role {}".format(role.mention))

Вот и все. Когда есть несколько участников с отключенным звуком, бот отправляет разные вставки. и я хочу, чтобы все результаты были в одних и тех же вложениях

1 Ответ

2 голосов
/ 30 мая 2020

Вот пример, использующий изрядное понимание списка:

@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]).


Каталожные номера:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...