命令管理
从 1.2.0 起,MaiBot 对插件命令提供统一管理:在 WebUI 中查看所有已注册的命令,并为命令配置执行权限(鉴权)。入口在「麦麦设置」页(侧边栏「配置管理」分组 → 麦麦设置)顶部的 命令管理 标签,地址 /config/bot?mode=commands;麦麦设置顶部有两个标签(详细设置 / 命令管理)和一个省略号菜单,命令管理是第二个标签。

查看所有命令
命令管理会列出当前运行时所有已注册的插件命令:
- 命令名称 与触发模式
- 所属插件 与描述
- 鉴权标记 — 标记为「操作员」级别的命令需要额外授权才能执行
- 停用标记 — 被停用的命令显示「已停用」徽标,与「受保护 / 公开」并列
列表里除了各插件注册的命令,还有 MaiBot 核心的内置命令 core.clear(/clear,清空当前聊天的历史上下文),它同样受这条页面的开关管理。
支持按名称、描述或插件名搜索命令,快速定位目标。
命令鉴权
命令可以要求操作员权限(operator 级别)。一个命令被标记为操作员级别后,只有以下用户 / 聊天可以执行它:
- 操作员列表 —
[plugin].permission中配置的用户(platform:id格式,如qq:123456789) - 命令放行规则 — 为该命令单独配置的
allow_users(允许执行的用户)与allow_chats(允许执行的真实聊天流)
在命令管理页中:
- 选中一个命令
- 在 放行用户 中添加允许执行该命令的用户(
platform:id格式) - 在 放行聊天 中选择允许执行该命令的聊天流(从已存在的聊天流中选择)
- 保存后,配置写入
bot_config.toml的[plugin]段
权限判定顺序
未匹配任何放行规则的命令,普通用户无法执行。判定逻辑由 has_command_permission() 统一处理:先看用户是否为操作员,再看命令级放行规则是否命中。
停用命令
选中一条命令后,详情卡片最上方是 启用此命令 开关。关掉它,聊天里的命令文本就不再触发这条命令,消息按普通消息继续处理——适合临时让某个命令「静音」,又不想卸载插件。
- 写入
bot_config.toml的[plugin].disabled_commands(命令 ID 数组,格式plugin_id.command_name) - 保存时按命令列表的顺序写入,与你的点击顺序无关
- 左侧列表里该命令会出现「已停用」徽标
- 重新打开开关即恢复,徽标消失
不显示无权限提示
命令详情的「仅为此命令放行用户」卡片下方有 不显示无权限提示 开关。开启后,普通用户执行受保护命令但没有权限时,麦麦不再回复提示消息,只静默拦截并写日志——群里少一条刷屏提示,排查时仍能在日志里看到。
- 写入
[plugin].silent_permission_denied(布尔值,作用于所有受保护命令) - 这个配置 1.3.1 就存在于
bot_config.toml,1.3.2 才在命令管理页暴露成开关 - 关闭开关(默认)时,无权限执行会照常收到提示消息
配置文件
命令权限保存在 bot_config.toml 的 [plugin] 段:
toml
[plugin]
permission = ["qq:123456789"] # 操作员列表
silent_permission_denied = true # 无权限时静默拦截,不回提示消息
disabled_commands = ["example-plugin.example-command"] # 已停用的命令 ID
[plugin.command_permissions.example-plugin.example-command]
allow_users = ["qq:987654321"] # 额外放行的用户
allow_chats = ["chat-xxxx"] # 额外放行的聊天流 ID验证与排错
验证:在命令管理页搜索一个命令名,能搜到且鉴权标记正确,说明命令已注册。
命令列表是空的?
- 确认对应插件已安装并启用
- 插件未声明 Command 组件时不会出现在列表里
命令明明在,群里发了却没反应?
- 看列表里有没有「已停用」徽标;有就打开「启用此命令」开关
- 内置
/clear的 ID 是core.clear,也会被同一个开关管
保存放行规则失败?
- 用户 ID 必须是
platform:id格式 - 放行聊天只能从已存在的聊天流中选择
相关文档
- 插件 Command 组件 — 插件侧如何声明命令与操作员级别
- Bot 配置 —
[plugin]段完整配置说明