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

Discord机器人子组命令选项全部丢失问题求助

解决Discord斜杠子组命令选项丢失的问题

以下是几个最可能导致选项不显示的原因及解决方法:

1. 选项层级挂载错误

Discord的斜杠命令结构是主命令 → 子组 → 子命令,所有选项必须直接挂载在子命令(也就是你的exp)上,而不是子组(edit)或主命令(user_info)上。这是最常见的错误。

错误示例:

# 错误:把选项加到了子组edit上
user_info = SlashCommand(name="user_info", description="用户信息操作")
edit_subgroup = user_info.create_subgroup(name="edit", description="编辑用户信息")
# 错误:选项挂载到子组,而非子命令exp
edit_subgroup.add_option(
    name="user_id",
    description="目标用户ID",
    type=OptionType.STRING,
    required=True
)
exp_subcmd = edit_subgroup.create_subcommand(name="exp", description="编辑经验")

正确示例:

# 正确:选项直接挂载到子命令exp上
user_info = SlashCommand(name="user_info", description="用户信息操作")
edit_subgroup = user_info.create_subgroup(name="edit", description="编辑用户信息")
exp_subcmd = edit_subgroup.create_subcommand(name="exp", description="编辑经验")
# 所有选项都加在子命令exp下
exp_subcmd.add_option(
    name="user_id",
    description="目标用户ID",
    type=OptionType.STRING,
    required=True
)
exp_subcmd.add_option(
    name="change_value",
    description="经验变更值",
    type=OptionType.INTEGER,
    required=True
)
# 其余两个选项同理添加到exp_subcmd

2. 选项参数不符合Discord规范

每个选项必须满足以下要求,否则Discord会忽略该选项:

  • name只能包含小写字母、数字、下划线,不能有空格或特殊字符
  • description不能为空,且长度不超过100字符
  • 选项类型(type)必须是Discord支持的类型(比如STRING、INTEGER、USER等),不能用自定义类型
  • 如果设置required=True,必须确保类型匹配(比如不能给INTEGER类型的选项传字符串)

3. 命令未正确同步到Discord

修改代码后,必须重新同步命令到Discord服务器,否则Discord会显示旧的缓存版本:

  • 如果是全局命令,调用框架的全局同步方法(比如bot.sync_commands())
  • 如果是服务器专属命令,调用服务器同步方法(比如bot.sync_commands(guild_ids=[你的服务器ID]))
  • 注意:全局命令同步可能需要1小时左右生效,服务器命令同步通常立即生效

4. 选项数量或长度超限

虽然你只有4个选项,远低于单命令25个选项的上限,但要注意单个选项的description不能过长,选项名称不能超过32字符,否则会被Discord过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:04