thesaurus
一定程度上弱化了reply的概念,同时也解决了MA不能在reply里设置Lua回复的bug。
{
"mod":"thesaurus",
"author":"简律纯",
"ver":"2.0.4",
"dice_build":612,
"brief":"词典匹配回复",
"comment":"",
"helpdoc":{
"thesaurus":"https://github.com/HsiangNianian/thesaurus"
}
}
To-Do
1. install
2. settings
2.1 cd
直接修改 mod\thesaurus\reply\main.lua
第 6
行 cd
值。
msg_reply.main = {
keyword = {
regex = { "(.*)" }
},
limit = {
cd = 2 --就是这个数字,单位秒.
},
echo = { lua = "main" }
}
2.2 dict
配置词典,因为暂时只是一个测试版本,所以你需要自行打开 mod\thesaurus\speech\dict.yml
并按照已有格式进行删改操作。当然,此文件遵守 yaml
语法。
下面给出一些示例:
# 这是一个注释
思考: ummm...?
哦:
- 不要之说一个哦!很没礼貌的!
- 哦...?
- o~
# 或采用行内表示法
简子姐: ["欸...?","咦惹——"]
笨蛋:
- "{nick}你才是!"
- "baka{at}"
# |使输出时保留换行符\n
早: |
bad
morning
# >可在编写时直接表示换行
晚上好: >
good
night
特别的,你可以在 |模式
用扩展语法 >>>f
来返回一个或多个Lua脚本:
丢我: |
>>>f
pic = "https://xiaobai.klizi.cn/API/ce/diu.php?qq="..msg.uid
return "[CQ:image,file="..pic.."]"
在做到输出回复词可以多回复功能以后,为实现更加强大的匹配词设定,加入了正则表达式。
你可以这样:
^简子姐.*: ["欸...?", "咦惹——"]
当检测到有人发言符合 简子姐xxx
(包括只有 简子姐
本身)的时候即可触发回复。
3. config
3.1 *.yml
自 1.2.0(20221016)
版本以后支持了多个 *.yml
的 检索,当 dict1.yml
内没有触发词时会继续寻找剩下的 *.yml
文件直到有结果为止。
关于词典触发词冲突
试想这样一种情况,dict1.yml
里写着这样一段:
笨蛋: 你真的好笨呀
而 dict2.yml
里写着这样一段:
笨蛋: 你也是呢~
那么当有人说出笨蛋时,会输出哪个?——答案是 dict1.yml
里的词典回复。
为什么?——这和 getFileList(path,exp)
函数有关,默认按照首字母排序机制,如果有需求,在以后的版本里可以考虑加上其他排序方式来改变词典的重复词输出(比如按照修改时间排序等)。
3.2 _FRAMEWORK
初衷是为简单分配词条回复,主要用户是MA骰主,但发现这种方法解决MAreply
无法添加Lua是可行的,又因为安卓与Windows是两个不同的系统,于是写了两个版本——Windows
与Linux
。
MA所搭载的Lua并没有io.popen()
这样的函数,但是令人欣慰的是可以使用os.execute()
,并且命令格式就是Linux
系统命令。
如果你是MA用户,可以把配置项里的_FRAMEWORK
改成"Linux"
,这样才可正常运行模块。
未完待续…