词库
词库默认位于 Answer 文件夹。
可以是:
- 符合格式的 json 文件
- 从 v25.200
能够返回等效格式的 table 的 lua 脚本
这里应当是若干个标准的 json 文件。每个 json 文件的数据结构应当包含一个键为 Answer,值为符合应答组结构的数组。即:
{
"Answer":[应答组0, 应答组1, ...]
}
所有在这个文件夹中的 Answer 数组最后将会在运行时被合并到一起。
- Lua 格式:执行该 Lua 表的结果要保证可以使用 lua2json 转换为等效的 json,因而不可包含无效字段
- 执行该表使用的是完全独立的 lua 环境,没有额外的绑定函数。
逻辑
- 所有应答组按优先级由大至小排序。
- 收到消息后按顺序检查是否匹配应答组条件。
- 触发应答组后,执行对应的应答元素操作
- 匹配到后,不继续进行后续匹配,除非执行的应答操作中包含了 ignore 指令
应答组对象
字段 |
类型 |
描述 |
regex |
string or array |
匹配规则。 |
anss |
array |
应答 |
level |
integer |
生效等级,用于权限控制 |
grps |
string[] |
|
user |
string[] |
|
pri |
integer |
指定应答组的优先级 |
regex 字段
从实例入手来看:
实例 1
消息内容 |
匹配结果 |
早 |
true |
早上好 |
true |
你走的真早 |
true |
晚上好 |
false |
实例 2
"regex": ["早", {"not": "真早"}]
消息内容 |
匹配结果 |
说明 |
早 |
true |
逻辑或,两个子判断均为true(含有早,不含有真早) |
早上好 |
true |
两个子判断均为true |
你走的真早 |
true |
true, false, 逻辑或结果为true |
晚上好 |
true |
false, true, 逻辑或结果为true |
anss 字段
应答元素
说明
操作
操作名 |
说明 |
message |
发送消息 |
order |
指令 |
lua_call |
以当前信息为参数在主 lua 环境中调用指定 lua 函数 |
lua_call1 |
以当前信息为参数在一次性 lua 环境中调用指定 lua 函数 |
lua_exec |
在主 lua 环境中执行代码 |
lua_exec1 |
在一次性 lua 环境中执行代码 |
state_call |
在指定的 lua 环境中以当前信息调用函数 |
state_exec |
在指定的 lua 环境中执行代码 |
ignore |
忽略本次匹配(保留产生的操作列表)继续进行后续匹配 |
sleep |
执行本操作时 sleep 指定的毫秒数 |
draw_deck |
抽取牌堆 |
clear |
发送并清空当前累积的文本消息 |