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
相关产品推荐
相关产品推荐

