discord.py发送Embed触发50035错误Invalid field问题求解
报错原因
- Discord API强制要求Embed字段的
value参数不能为空字符串,你的报错就是触发了这条校验规则。 - 代码遍历cog时,如果某个cog没有注册任何顶级公开命令,
cog_cmd会保持初始的空字符串,直接传入add_field的value参数就会触发400错误。 - 你贴出的代码还存在缩进错误:遍历command的for循环比上一行
cog_cmd = ""多了一层缩进,运行时会先抛出语法错误,需要先修正层级。
解决方法
可以根据你的需求二选一处理空值场景:
- 跳过没有命令的cog,不生成对应Embed字段
- 给没有命令的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
相关产品推荐
相关产品推荐

