【问题标题】:Multiple results in the same Embed | Discord.py同一个嵌入中的多个结果 |不和谐.py
【发布时间】:2020-09-17 14:57:46
【问题描述】:

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

这是代码

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

现在的事情是。当有多个静音成员时,机器人会发送不同的嵌入。我希望所有结果都在同一个嵌入中

【问题讨论】:

    标签: python-3.x discord.py


    【解决方案1】:

    这是一个使用大量列表理解的示例:

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


    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2022-08-16
      • 2021-11-20
      • 2021-03-13
      相关资源
      最近更新 更多