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

如何在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)

关键修改点说明:

  1. 替换遍历方法:用cog.walk_app_commands()替代walk_commands(),专门遍历斜杠命令(包括子命令组里的子命令)
  2. 处理子命令:判断命令是否有父命令(即属于某个命令组),如果有就显示完整的/父命令 子命令格式
  3. 添加命令描述:把命令的description也展示出来,帮助用户快速了解命令用途
  4. 空模块过滤:只有当Cog下存在斜杠命令时才添加对应的嵌入字段,避免出现空内容的字段

这样生成的帮助信息会按Cog分组,每个命令带格式和描述,比系统自带的按字母排序更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:25:53