Medic已于2020年8月2日关停

词条是整个词库的核心所在,有了词条,机器人才能具备各种功能,下面就来看看如何编写简单的词条吧

在这之前,先把以下代码放在[模块]

机器人开启//开机指令,跟词库信息中的开机指令一致
已开启//回复语

机器人关闭//关机指令
已关闭
开关机指令必须放入[模块]中才能生效

以下内容为[词条]

既然是机器人,就得有个菜单,例如

菜单//触发指令
签到\r待定\r待定//返回消息并直接发送

应该很好理解吧

那么\r是啥?

\r就是换行符,所以说返回的消息直接按回车是不会换行的,要添加\r才行

例如

菜单//触发指令
签到
待定
待定

这样返回的结果不是

签到
待定
待定

而是

签到待定待定

写机器人当然不能没有“签到”,不能签到的机器人是没有灵魂的

在写这个词条之前先了解一下语法规则和需要用到的伪代码

  • 词条执行的原则为从上到下读取,遇到空行停止
  • 词条有顺序关系,越上面的词条享有越高的优先级
  • 词条返回值如果为空,则会继续往下寻找符合条件的词条,如果不是特意需要后面的词条继续执行,请不要返回空内容
  • 词条由三个部分组成
    • 关键字
      • 正则表达式构成,详细资料可以参考链接
    • 伪代码内容
      • 伪代码由数行内容组成,不能携带空行,伪代码中的行数并不能使发送的文本换行,换行请使用\r
    • 空行
  • 词条非代码部分的内容将被作为回复内容残留,最终代码执行结束后,由词库拼接返回发送
  • 变量名(单字符):变量值:设置变量,如A:XXX
  • @变量名:获取变量值
  • ToolKit->time(format):格式化获取当前系统时间,填写format时返回时间戳,填写y年M月d日H时m分s秒可指定格式
  • ToolKit->getConfig(路径\,键值\,默认值):从指定路径文件中的指定键值读取保存的数据,若读取失败或不存在则返回默认值
  • ToolKit->setConfig(路径\,键值\,指定值):在指定路径文件中的指定键值写入指定值,若文件不存在会自动创建该文件及对应父目录
  • ToolKit->random(最小值\,最大值):在最小值最大值闭区间随机取一个值
  • calc(公式):计算,支持加(+)、减(-)、乘(*)、除(/)、取余数(%)
  • goto(条件)>>跳过的行数:跳过的行数为当前行(不包括)开始往下,如果为负数则往上(包括)
  • return空格:中断代码,return 之后的代码不再执行。注意:return后面一定要加空格
  • 内置变量
    • @robot:机器人QQ
    • @group:群号
    • @groupName:群名称
    • @uin:发送者QQ
    • @code:群code
    • @nick:发送者昵称
    • @mark:消息标记
    • @time:消息发送时间
    • @title:标题
    • @machineCode:机器码
    • @path:手机根目录(/storage/emulated/0/)

了解上述语法之后(有点多,但并不难,请耐心看完,白嫖党随意)来整理一下思路

  1. 签到一天只能签一次,所以需要判断是否签过到,即本次签到时间和上次签到时间是否相等
  2. 签到之后要有奖励,才能让群员积极签到,这里以金币为例,随机获取500到1000金币
  3. 记录本次签到的时间,方便下次判断
  4. 计算增加的金币和原来的金币之和,并写入

综上,基础签到代码如下

签到//触发指令
A:ToolKit->getConfig(@path/DIC/远/@group/@uin.txt\,签到时间\,0)
//读取记录过的签到的时间
D:ToolKit->getConfig(@path/DIC/远/@group/@uin.txt\,金币\,0)
//读取用户金币
B:ToolKit->time(dd)
//获取发送指令的时间,并转换为“日”
C:ToolKit->random(500\,1000)
//在500-1000内随机数,作为增加的金币
E:calc(@C+@D)
//计算之前的金币和增加的金币之和
goto(@A==@B)>>3
//判断发送指令的时间是否等于上次签到的时间,如果等于则跳过3行(注意:注释不算行)
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,签到时间\,@B)
//写入本次签到时间
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,金币\,@E)
//写入计算之后的金币
return @nick\r恭喜您签到成功\r获得金币+@C\r总金币:@E
//终止代码,不再向下执行,返回并发送签到情况
你已经签过到了哦
//若上面的判断为相等,则跳到这一行,跳过写入过程,直接发送

以上是基础签到代码,如果想要更丰富的功能可参考以下代码

签到//触发指令
A:ToolKit->getConfig(@path/DIC/远/@group/@uin.txt\,签到时间\,0)
//读取记录过的签到的时间
D:ToolKit->getConfig(@path/DIC/远/@group/@uin.txt\,金币\,0)
//读取用户金币
B:ToolKit->time(dd)
//获取发送指令的时间,并转换为“日”
C:ToolKit->random(500\,1000)
//在500-1000内随机数,作为增加的金币
M:ToolKit->random(100\,300)
//在100-300内随机数,作为扣掉的金币
E:calc(@C+@D)
//计算之前的金币和增加的金币之和
F:calc(@D-@M)
//计算之前的金币和减去的金币之差
I:calc(@G+1)
//计算签到次数+1
goto(@A==@B)>>4
//判断发送指令的时间是否等于上次签到的时间,如果等于则跳过4行
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,签到时间\,@B)
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,金币\,@E)
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,签到次数\,@I)
return @nick\r恭喜您签到成功\r获得金币+@C\r签到次数+1\r总金币 @E\r总签到次数 @I
@nick\r啊哦,你因为多次的签到被琪亚娜罚款了哦\r金币-@M
ToolKit->setConfig(@path/DIC/远/@group/@uin.txt\,金币\,@F)

写完词库后保存,进入主程序,点右上角➕登录你的小号(注意:不要开登录验证之类的),然后在管理员那里填写你自己的QQ,点击确定。然后去群里发送开机指令就可以了。


粉色的花瓣,美丽地缠绕在身上。依在风里。