词库冲突排查 —— 机器人来回插话怎么办
冲突是怎么发生的
Meria 里一个账号可以绑定多个词库,每个词库监听自己的触发词。当多个词库的触发词有重叠或包含关系时,就会出现冲突:
场景一:完全相同的触发词
词库 A(签到词库)和词库 B(积分词库)都用「签到」做触发词。成员发「签到」后,两个词库都响应——机器人会连续发两条消息:一条说"签到成功 +1 分",另一条说"签到成功,连续第 23 天"。
场景二:包含/前缀关系
词库 A 监听「签到」,词库 B 监听「签到榜」。成员发「签到」时,A 和 B 都可能匹配(取决于框架的匹配逻辑)。
场景三:通配符/模糊匹配
部分词库用了模糊匹配(比如包含"歌"字都触发点歌),另一个词库也有包含"歌"的触发词。成员随便发一句带"歌"的话,两个词库都可能触发。
排查步骤
第一步:看日志
Meria 有内置日志标签(见 日志标签页),所有触发事件都记录在这里。看日志里是不是同一条消息被多个词库匹配了。
第二步:列出来已装词库的触发词
把每个已绑词库的触发词逐个记下来,对比有没有重叠。
第三步:定位冲突点
找到哪两个词库的触发词冲突了。
解决方案
方案一:卸掉重复功能的词库
最简单粗暴。如果两个词库有功能重叠,留一个就行。
方案二:改触发词
进入词库详情页,把其中一个词库的触发词改掉。比如签到词库用「签到」,积分词库改成「打卡」——避免重复。
方案三:改回复文案
如果触发词没法改(比如多个词库都监听「@新人」),至少把回复文案改得不一样,让成员区分清楚是哪个功能在响。
方案四:分群绑定
不同群绑定不同词库组合。群 A 用群管+签到,群 B 用音乐+娱乐——触发词只在各自群里生效,不会互相干扰。
预防原则
- 新下词库先看触发词——跟已装的对比一下有没有重叠
- 宁少勿多——一个群先跑顺一两个词库,加第三个之前先确认不冲突
- 先在测试群试——新词库先绑在自己的测试群跑一下,确认没冲突再进正式群