Skip to content

BOT的技术先进性

本页写于2023年08月,距离bot编写之初已过一年有余。在这一年多的维护过程中,Little Unicorn Bot打败了其余bot,市场占有率遥遥领先,用户粘性十足。这首先要归功于bot成功的运营和丰富而精彩的插件。其次,这与bot技术上的先进性是分不开的。

1. 灵活的插件开关

为了在不同群开关不同的bot插件,我们设计了名为“PluginGroupManager”的插件管理器,在初始化插件列表的时候,PluginGroupManager与插件进行组合,达到统一开关插件组的目的,无需在插件层面额外记录开关要求。

2. 超强风控抗性

Bot面临的最大挑战就是tx风控,风控原因可能是发送黄赌毒图片文字、语句检测出敏感词、高频发信息、机械性发送长文字等。针对这几个风险点,我们逐一设计了解决办法。

首先,之前“彩票”插件会发送包含“彩票”的语句,“来点涩涩”插件会发送不适宜的图片。为此,我们将“彩票”改名为“祈福”,将“来点涩涩”下架,规避了两者带来的风险。

其次,发送长文字会导致风控,因此我们将可能引发此风险的地方都改成了发送图片,例如“-help”、“-sjmc”等等。

第三,高频发送信息会导致风控,因此我们在群聊消息出口和warning消息出口设计了缓冲队列,将群聊消息和私聊warning的发送频率大体限制在一秒一条,有效抵御了通知广播、大面积词云发送等带来的风控风险。

3. 热插拔支持

在某些时刻,bot可能会高频重启,消息保存在内存中是不可取的(会丢失group config信息、聊天记录信息等),因此我们引入了数据库作为信息存储容器。虽然这样做需要同步内存和数据库,增加了代码开发难度,但是解决了热插拔这个大问题。

4. 高可扩展、易读易用的架构

Bot的主要架构在utils.standardPlugin里,代码简单、接口易懂,实现起来非常简单,更有很多已实现的插件可以照葫芦画瓢。在高可扩展、易读易用的架构加持下,我们以很低的成本就开发出了丰富的插件。

5. 丰富的底层工具支持

我们有丰富的底层工具支持bot的常规开发,比如画图函数库utils.responoseImage_beta,gocqhttp的对接接口utils.basicEvent,基础架构utils.standardPlugin,缓冲队列utils.bufferQueue等等。

6. 周密的告警方案

为了抵御代码exception对业务的影响,我们设计了warning消息报警。为了抵御gocqhttp下线对bot的影响,我们设计了gocqWatchDog邮件报警。