同一嵌入中有多个结果|不和谐

时间:2020-05-29 23:48:18

标签: python-3.x discord.py

如何在同一嵌入中包含多个结果?

这里是代码btw

@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 个答案:

答案 0 :(得分:2)

下面是使用大量列表理解的示例:

@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), ....
然后通过另一种理解将其检索,以每个元组的第一个元素为名称,第二个元素为ID。

必须将ID转换为字符串才能使.join()工作,因此str(i[1])


参考: