如何在Discord.py中自动生成可提及的应用命令帮助菜单?
解决Discord机器人自动提及应用命令的问题
你不需要手动复制命令ID,tree.get_commands()返回的每个应用命令对象本身就带有id属性,直接调用就能拿到对应命令的ID,完全可以自动化生成带提及的帮助菜单。
核心实现细节:
- 从命令树获取的
AppCommand对象,自带id属性,这就是Discord识别命令提及所需的ID。 - Discord应用命令的标准提及格式是
<command:{命令ID}>,发送后会自动渲染成可点击的命令提及。
示例代码(discord.py):
# 假设tree是你的CommandTree实例 async def send_help_menu(interaction): help_msg = "📜 机器人命令列表:\n" # 遍历所有顶层命令 for cmd in tree.get_commands(): # 构造可点击的命令提及 cmd_mention = f"<command:{cmd.id}>" # 拼接命令描述 cmd_desc = cmd.description if cmd.description else "无描述" help_msg += f"- {cmd_mention}: {cmd_desc}\n" # 如果是命令组,遍历子命令 if hasattr(cmd, "commands"): for sub_cmd in cmd.commands: sub_mention = f"<command:{sub_cmd.id}>" help_msg += f" └ {sub_mention}: {sub_cmd.description or '无描述'}\n" await interaction.response.send_message(help_msg)
补充说明:
如果你的机器人有多层级的子命令/子组,可以写个递归函数遍历所有命令,确保所有新增的命令都会被自动加入帮助菜单。这个方法完全不需要手动维护命令ID,只要命令树同步完成,帮助菜单就会自动更新。
内容的提问来源于stack exchange,提问作者Clement Genninasca
相关产品推荐
相关产品推荐

