如何在discord.py中获取斜杠命令列表并分类制作帮助命令?
解决Discord.py斜杠命令的分组帮助问题
你原来的代码用walk_commands()只能遍历传统前缀命令,要获取斜杠命令,需要改用walk_app_commands()方法。下面是修改后的完整代码,能按Cog分组展示所有斜杠命令,还会包含命令描述,让帮助信息更清晰:
@app_commands.command(name="help", description="查看所有斜杠命令的分组帮助") async def help(self, interaction: discord.Interaction): em = discord.Embed( title="斜杠命令帮助", description="所有命令按所属模块分组展示", color=discord.Color.blurple()) em.set_thumbnail(url=self.bot.user.avatar.url) for cogname, cog in self.bot.cogs.items(): # 遍历当前Cog下的所有斜杠命令 cog_slash_cmds = cog.walk_app_commands() cmd_list = [] for cmd in cog_slash_cmds: # 处理子命令(比如 /group subcmd) if cmd.parent: cmd_display = f"/{cmd.parent.name} {cmd.name} - {cmd.description or '无描述'}" else: cmd_display = f"/{cmd.name} - {cmd.description or '无描述'}" cmd_list.append(cmd_display) # 如果当前Cog有斜杠命令才添加字段 if cmd_list: em.add_field( name=cogname, value="\n".join(cmd_list), inline=False) await interaction.response.send_message(embed=em)
关键修改点说明:
- 替换遍历方法:用
cog.walk_app_commands()替代walk_commands(),专门遍历斜杠命令(包括子命令组里的子命令) - 处理子命令:判断命令是否有父命令(即属于某个命令组),如果有就显示完整的
/父命令 子命令格式 - 添加命令描述:把命令的description也展示出来,帮助用户快速了解命令用途
- 空模块过滤:只有当Cog下存在斜杠命令时才添加对应的嵌入字段,避免出现空内容的字段
这样生成的帮助信息会按Cog分组,每个命令带格式和描述,比系统自带的按字母排序更直观。
内容的提问来源于stack exchange,提问作者Imaginary
相关产品推荐
相关产品推荐

