如何在同一嵌入中包含多个结果?
这里是代码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))
现在是。当有多个静音成员时,漫游器会发送不同的嵌入。我希望所有结果都放在同一嵌入中
答案 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])
。
参考: