开始
本教程会使用(数)
语法,获取触发词中匹配到的数字。
配合回复中的获取匹配到的数字
的语法,能够使上一教程中较为固定的出售数量的方式,变为自定义出售鱼的数量。
在上篇的基础上,向机器人发送如下内容
word.rm 卖十条鱼 1
本命令表示,删除卖十条鱼
这个触发词的第1
个回复
而后,再发送以下内容,添加词库
word.add 卖(数)条鱼 你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!
我们的设定命令是这样的:
word.add 卖(数)条鱼 你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!
它的触发词是
卖(数)条鱼
我们发送了卖2条鱼
,而触发词是卖(数)条鱼
,它被成功触发了!
2这个数字,被词库识别为了(数)
在设定问答的时候,触发词内的(数)可以表示一个任意的数字,所以卖(数)条鱼
,则表示你可以发送:
这些都是能够被匹配的。
它的回复词是
你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!
我们先放下心中的疑问,来看一下(数:1)
,它也是个词库的语法
(数:xxx)
获取触发词中(数)匹配到的数字,xxx表示第几个数
一个问答中也许有的时候会出现多个(数)
,比如有些问答词可能是这样的:
卖(数)条鱼,卖(数)只螃蟹
卖2条鱼,卖10只螃蟹
则此时我们想在回复中
获取第一个(数)
匹配到的2
,则在回复中写(数:1)
获取第二个(数)
匹配到的10
,则在回复中写(数:2)
你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!
在上一楼,我们看到了(数:1)
的作用,但是(-:鱼:(数:1))
和(+:金币:(数:1))
是什么?
我们发现,(-:鱼:(数:1))
,它其实是个词库减少物品的语法:
(-:物品名称:数量)
从背包中减少某个物品,输出减少的数量
通过对比
(-:鱼:数量)
(-:鱼:(数:1))
我们发现,原先要填写数量
这个参数的地方,被填写上了(数:1)
,在上一楼我们知道(数:1)
的作用是获取触发词中(数)匹配到的数字
,也就是卖2条鱼
中的2
。
数量编写的是用户的命令中的数字,通过这个方法,我们就实现了自定义出售数量