每个功能背后都有一个小故事,因此我们就先讲故事再讲解析吧

编辑于2020.2.6 转载请注明作者

投喂功能来源于什么?

投喂功能最早来源于2019.5.8日的一次更新,原名叫做“在群主腿上写正字”。这是一个以群为单位,对象为群主的一种文字养成游戏。
后来因为该功能过于火热导致冻结的问题,在5月份的下旬就停用了。
由于当时骰子数目本身很少再加之铃心没有广泛的推广,因此并没有多少人注意到这个功能。

而后在11月末(或者是12月初?)我偶然无聊,重写了这个功能,并且将其轻量化,而后就有了现在的投喂。

一起来写一个投喂功能吧!

最初“在群主腿上写正字”的结构非常简单——改进后的投喂也是非常简单。

首先,我们在制作功能之前一定要有一个预计的效果。如果没有对自己的目标进行一个合理的规划的话,很有可能会出现后续的制作难题。

那我们对于投喂有什么样的要求呢?最早的时候,我的要求很简单:

  • 1.是一个以机器人为中心的累积性质的养成系统
  • 2.能够让用户在一天内都惦记着这个功能
  • 3.不会影响正常的聊天(基本准则)

好,那就开始制作吧,首先我们需要做一个累加器来记录累积触发了多少次“投喂”的关键词。为了保证投喂不会因为机器人的重启而重新计数,因此我们采用【写配置】来进行保存工作。

紧接着,我们需要在指定的路径下(上文中即指【运行目录】\app\config\下)创建一个投喂.txt就大工告成了!
文件内什么都不需要写,不存在的配置项和配置节铃心会自动补全。

这就是一个简单的累加器结构,采用的是通过读写配置的形式进行累加。这种方式的好处是,简单易懂方便,在数据量较少的情况下效率很高。

好了,那我们现在就有一个非常非常基础的投喂功能了——现在它只有一个简单的累加结构,起到的功能也只是记录你到底触发了几次这个关键词而已。那我们为了实现更多的目标,要怎么做呢?

投喂功能的延伸

首先,我们如果想要知道今天体重增长了多少,该怎么做呢?

这里我们有两个方案:

  1. 在每天00:00保存昨天最后的投喂数据,在00:00之后的投喂通过当前体重减去该数据的形式得到当日的体重增长。
  2. 创建一个叫做today的配置项,在体重增加时同样对它进行变化,并在每天的00:00对该项数据进行重置。

这里我们采用方案二来进行进一步的延伸制作。

除此之外,我们还需要一个回复,用于在每天晚上的00:00重置今日体重的计数器——铃心的作者为此贴心的提供了一个叫做“定时回复”的功能来帮助我们重置计数器。

好吧,人家是叫做定时任务
记得点添加和保存,这里推荐在00:01触发,而不是正好00时

好了,这样,我们的投喂功能就有了今日的计数器。这也就是我现在在采用的投喂方案。简单明了还实惠。

关于实现这个功能的方案一大家可以自行尝试一下,从我的预计来看,方案一会优于方案二——因为其不会因为改变了投喂的计算规则而受到影响。

如何让这个功能变得更有趣

方案有很多很多——譬如说你可以给所有的用户设定一个目标,达到多少之后会有什么变化。

也可以采用随机加投喂的量,并且不同的随机数有不同的回复结果。

也可以设定一个投喂排行榜——不过这部分稍微有点难度,我们之后会专门讲一期依靠读写配置做成的排行榜系统。

但是无论怎么样,最核心的部分还是在于上文的简单累加器,至于其他的——那就是各位的事情了。

本篇结语

本篇是一个最最基础的入门——在本篇中,我们非常轻松地完成了一个最近很红火的简单功能——投喂。并且完成了它的自动重置部分。

该功能的核心就是一个以读写配置为基础的累加器结构,在之后的制作中,我们会反复利用到类似的结构进行记录数据。

在下一篇,我会向大家介绍也是最近比较火的好感度回复——也是从下一篇开始,我们会一点点走向正轨,走向一个无尽的开发之路。

其实在我看来...投喂这个功能,只要逻辑不出问题,应该都能写出来吧——只需要稍加尝试。


我什么都不懂,我只会现学现卖,谢谢配合。