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

如何实现支持子文件夹与分类的机器人动态帮助命令?

机器人动态分类帮助命令实现方案

默认你的项目已按「单个分类对应一个子文件夹」的规则存放命令文件,具体实现逻辑如下:

1. 对齐项目目录结构

命令根目录(例如命名为commands/)下的一级子文件夹直接对应分类名,子文件夹内存放该分类下的所有命令文件,示例结构:

commands/
├── Cat1/
│   ├── 命令1.js
│   └── 命令2.js
├── Cat2/
│   ├── 命令3.js
│   └── 命令4.js
└── Cat3/
    └── 命令5.js

2. 启动时预构建分类-命令映射

机器人启动阶段一次性遍历命令根目录:

  • 先读取根目录下所有一级子文件夹的名称,作为可用分类列表
  • 再逐个遍历每个子文件夹内的命令文件,提取命令的名称、描述、用法等元信息,按分类存入全局映射对象,示例结构(各语言逻辑通用):
    const commandMap = {
      "Cat1": [
        { name: "!签到", desc: "每日领取积分", usage: "!签到" },
        { name: "!查积分", desc: "查询当前账户积分", usage: "!查积分 [@用户可选]" }
      ],
      "Cat2": [
        { name: "!禁言", desc: "封禁指定用户发言权限", usage: "!禁言 @用户 时长" },
        { name: "!踢人", desc: "将指定用户移出群聊", usage: "!踢人 @用户" }
      ],
      "Cat3": [/* 对应分类的命令信息 */]
    }
    

3. 处理无参数的!help指令

当用户输入不带任何参数的!help时,直接提取commandMap的所有键值作为分类列表,按要求格式返回:

请选择要查看命令的分类:
Cat1
Cat2
Cat3

4. 处理带分类的查询请求

你可以选择两种交互逻辑任选一种,也可以同时支持:

  • 二次输入交互:监听用户在!help触发后的后续输入,判断输入内容是否在commandMap的键列表中,匹配到就返回对应分类下的所有命令格式化结果,匹配失败返回「分类不存在,请输入正确的分类名」
  • 直接参数触发:支持用户直接输入!help 分类名(例如!help Cat2),按同样的匹配逻辑返回结果即可

可选优化

  • 增加分类别名映射,兼容用户大小写输入、缩写输入的场景,例如输入cat2、管理都可以匹配到Cat2分类
  • 可配置隐藏分类,部分内部命令分类不展示在初始分类列表中,仅当用户精准输入分类名时才返回对应命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:54:06