命令为什么按 locale 互斥
Lingchu Bot 的用户侧能力集中在 QQ 群管理命令。本页解释命令系统背后的设计决策。完整命令列表(含语法和选项)请参见 QQ 命令参考。
Locale 互斥触发词
Section titled “Locale 互斥触发词”命令触发词按 locale 互斥选择:中文 locale 启用中文触发词,英文 locale 启用短横线风格英文触发词。两种语言的触发词不会同时启用。
这避免了在两种语言自然共存的群中出现歧义。如果两套触发词同时启用,菜单 这样的短语可能与英文命令别名或用户的普通消息冲突。将触发词绑定到 LINGCHU_LOCALE 让每次部署都可预测。
反馈文本遵循相同的 locale 设置,因此中文 locale 的机器人用中文回复,英文 locale 的机器人用英文回复。
菜单作为索引
Section titled “菜单作为索引”菜单 / menu 命令是索引入口。它列出可进入的子菜单命令,而不是把所有功能堆在一条长消息里。子菜单由代码驱动,并按当前平台、协议和实现过滤。
这种设计让入口保持简短,让机器人只展示当前部署实际能执行的功能。
不被当前平台、协议或实现支持的命令会从菜单中隐藏,而不是在被调用时报告错误。当前实现过滤规则包括:
- OneBot V11 未知实现会隐藏群公告和群头像。
NapCat.Onebot >= 4.18.0显示群公告和群头像。- 远程管理命令仅 OneBot V11 可用。
- 远程公告和群发公告要求
NapCat.Onebot >= 4.18.0。
Fail-closed 过滤意味着菜单永远不会宣传机器人无法执行的命令。这是一种刻意的取舍:菜单更不完整,但用户在尝试命令后永远不会撞上“不支持”的死胡同。
Telegram 支持部分 QQ 命令,因为 Telegram Bot API 暴露的能力不同。QQ 专属的卡片、专属头衔、群头像、群公告、远程管理和协议重启命令在 Telegram 上保持隐藏。这让每个平台的菜单如实反映自身能力,而不是显示总会失败的命令。
群管理命令对已覆盖适配器的网络异常和操作拒绝返回可读错误消息。未知异常仍会向外抛出,方便开发者发现未覆盖的问题——机器人不会默默吞下无法分类的失败。