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

Discord.py子命令含两个选项时机器人无法启动的问题解决

Discord.py子命令双必填STRING选项失效问题及解决办法

在使用Discord.py开发机器人时,遇到以下问题:给子命令添加两个必填的STRING类型选项后,机器人无法正常运行;但只要给其中一个选项加上autocomplete=True参数,机器人就能正常启动并响应命令。

无法运行的代码示例

@bot.command(
    name="test_command",
    description="Just a test command",
    scope=GUILD_ID,
    options = [
        interactions.Option(
            name="sub1",
            description="The first subcommand",
            type=interactions.OptionType.SUB_COMMAND,
            options=[
                interactions.Option(
                    name="opt1",
                    description="The first option",
                    type=interactions.OptionType.STRING,
                    required=True,
                ),
                interactions.Option(
                    name="opt2",
                    description="The second option",
                    type=interactions.OptionType.STRING,
                    required=True
                )
            ]
        )
    ]
)
async def test_cmd(ctx: interactions.CommandContext, sub_command, opt1, opt2):
    await ctx.send(f"You Chose: {opt1}, {opt2}!")

添加autocomplete后可正常运行的代码示例

@bot.command(
    name="test_command",
    description="Just a test command",
    scope=GUILD_ID,
    options = [
        interactions.Option(
            name="sub1",
            description="The first subcommand",
            type=interactions.OptionType.SUB_COMMAND,
            options=[
                interactions.Option(
                    name="opt1",
                    description="The first option",
                    type=interactions.OptionType.STRING,
                    required=True,
                    autocomplete=True                      # 添加此行
                ),
                interactions.Option(
                    name="opt2",
                    description="The second option",
                    type=interactions.OptionType.STRING,
                    required=True
                )
            ]
        )
    ]
)
async def test_cmd(ctx: interactions.CommandContext, sub_command, opt1, opt2):
    await ctx.send(f"You Chose: {opt1}, {opt2}!")

Discord.py官方文档中存在子命令包含多个选项的示例,说明该功能本身是被支持的。

最终解决办法

问题根源在于通过pip安装的Discord.py库版本存在缺陷,直接安装GitHub上的最新库版本后,问题即可消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:27:25