You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个Discord embed中展示所属guild的全部emoji

问题原因

  • 现有逻辑每次调用命令仅遍历取出1个emoji,就直接创建并发送embed,所以会单独生成多条embed消息
  • 全局变量j的计数逻辑完全不需要,也不需要用while True死循环遍历,直接一次性遍历所有emoji拼接内容即可
  • 没有提前对emoji按动态、静态分类拼接,也没有一次性把所有内容填入单个embed再发送

修复后代码

@commands.command()
async def gimmeem(self, ctx):
    emojilist = ctx.guild.emojis
    # 分开存储动态和静态emoji,不需要区分可以去掉分类逻辑
    animated_emojis = []
    static_emojis = []
    for emoji in emojilist:
        if emoji.animated:
            animated_emojis.append(str(emoji))
        else:
            static_emojis.append(str(emoji))
    
    emb = discord.Embed(title = "Server Emojis")
    # 拼接内容后一次性填入字段
    if animated_emojis:
        emb.add_field(name = "动态Emoji", value = " ".join(animated_emojis), inline=False)
    if static_emojis:
        emb.add_field(name = "静态Emoji", value = " ".join(static_emojis), inline=False)
    # 所有内容填充完成后再发送一次embed
    await ctx.send(embed=emb)

注意事项

  • discord embed单个字段的value最大长度限制为1024字符,如果服务器emoji数量很多导致拼接后的内容超出长度,你可以按数量拆分多个字段存储
  • 如果不需要区分动态和静态emoji,直接把所有emoji拼到同一个字段的value里即可

内容的提问来源于stack exchange,提问作者Derek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:36:04