[word-core] 词库入门教程(四)钓鱼小游戏自定义出售鱼的数量

开始

本教程会使用(数)语法,获取触发词中匹配到的数字。

配合回复中的获取匹配到的数字的语法,能够使上一教程中较为固定的出售数量的方式,变为自定义出售鱼的数量。

其他教程

2 个赞

第一步

在上篇的基础上,向机器人发送如下内容

word.rm 卖十条鱼 1

本命令表示,删除卖十条鱼这个触发词的第1个回复

而后,再发送以下内容,添加词库

word.add 卖(数)条鱼 你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!

2 个赞

(数)与(数:1)

我们的设定命令是这样的:

word.add 卖(数)条鱼 你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!

触发词部分

它的触发词是

卖(数)条鱼

我们发送了卖2条鱼,而触发词是卖(数)条鱼,它被成功触发了!

2这个数字,被词库识别为了(数)

在设定问答的时候,触发词内的(数)可以表示一个任意的数字,所以卖(数)条鱼,则表示你可以发送:

  1. 卖1条鱼
  2. 卖11条鱼
  3. 卖111条鱼
  4. 卖11111条鱼

这些都是能够被匹配的。

回复词部分

它的回复词是

你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!

我们先放下心中的疑问,来看一下(数:1),它也是个词库的语法

(数:xxx)

获取触发词中(数)匹配到的数字,xxx表示第几个数

一个问答中也许有的时候会出现多个(数),比如有些问答词可能是这样的:

卖(数)条鱼,卖(数)只螃蟹

卖2条鱼,卖10只螃蟹

则此时我们想在回复中
获取第一个(数)匹配到的2,则在回复中写(数:1)
获取第二个(数)匹配到的10,则在回复中写(数:2)

2 个赞
你卖掉了(-:鱼:(数:1))条鱼,获得了(+:金币:(数:1))枚金币!

在上一楼,我们看到了(数:1)的作用,但是(-:鱼:(数:1))(+:金币:(数:1))是什么?

原理解析

我们发现,(-:鱼:(数:1)),它其实是个词库减少物品的语法:

(-:物品名称:数量)

从背包中减少某个物品,输出减少的数量

通过对比

(-:鱼:数量)
(-:鱼:(数:1))

我们发现,原先要填写数量这个参数的地方,被填写上了(数:1),在上一楼我们知道(数:1)的作用是获取触发词中(数)匹配到的数字,也就是卖2条鱼中的2

数量编写的是用户的命令中的数字,通过这个方法,我们就实现了自定义出售数量

2 个赞