Discord.py自定义help命令触发400 Bad Request报错问题咨询
discord.py自定义help指令Embed报错解决方案
报错原因
报错信息已经明确指向参数问题:In embed.fields.0.value: This field is required,核心原因是Discord API要求Embed的每个field的value参数必须为非空字符串,不能使用空字符串或仅包含空白字符的内容。你代码中Personnel teams对应的字段value设置为空字符串,触发了API参数校验失败。
修复方法
- 为空value的字段补充有效内容,如果你不需要显示内容仅需要占位,可以使用零宽空格
\u200b作为value值,视觉上无显示但符合非空要求;如果该字段不需要可以直接删除。 - 若后续出现help指令冲突问题,可在Bot初始化时添加
help_command=None参数,移除discord.py内置的默认help指令。
修复后代码示例
# 初始化Bot时可选添加help_command=None避免指令冲突,示例: # client = commands.Bot(command_prefix='>', intents=discord.Intents.all(), help_command=None) @client.command(pass_context = True) async def help(ctx): emb = discord.Embed(title = 'Command Reference!', colour = 0x2f3136) emb.add_field(name = 'Bot prefix:', value='```>```', inline=True) # 空value替换为零宽空格,不需要该字段可直接删除本行 emb.add_field(name = 'Personnel teams', value='\u200b', inline=False) emb.add_field(name = 'Blocking a user', value='```>ban 1с/н/м Reason```', inline=True) await ctx.send(embed = emb, delete_after=60.0)
补充说明
Discord对Embed字段还有长度限制:name最长256字符,value最长1024字符,超出长度也会触发类似的参数校验错误。
内容的提问来源于stack exchange,提问作者never
相关产品推荐
相关产品推荐

