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

discord.py发送Embed触发50035错误Invalid field问题求解

报错原因
  • Discord API强制要求Embed字段的value参数不能为空字符串,你的报错就是触发了这条校验规则。
  • 代码遍历cog时,如果某个cog没有注册任何顶级公开命令,cog_cmd会保持初始的空字符串,直接传入add_field的value参数就会触发400错误。
  • 你贴出的代码还存在缩进错误:遍历command的for循环比上一行cog_cmd = ""多了一层缩进,运行时会先抛出语法错误,需要先修正层级。
解决方法

可以根据你的需求二选一处理空值场景:

  1. 跳过没有命令的cog,不生成对应Embed字段
  2. 给没有命令的cog设置默认占位文本,避免空值

修正后代码示例

emd = discord.Embed(color=0xff0000)
# 注意:discord.py v2.x以上版本需要把avatar_url换成avatar.url
emd.set_author(icon_url=self.client.user.avatar_url, name="Cogs")
for cog in self.client.cogs:
    cog_cmd = ""
    # 修正缩进层级
    for command in self.client.get_cog(cog).get_commands():
        cog_cmd += f" {command}\n"
    # 空值处理逻辑
    if not cog_cmd:
        # 选择1:填充占位文本
        cog_cmd = "*无可用命令*"
        # 选择2:跳过无命令的cog,替换上面一行为 continue
    emd.add_field(name=f'{cog}:', value=cog_cmd, inline=False)
    
await ctx.send(embed=emd)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:57:01