如何搭建一个聊天机器人?#0
本文是搭建聊天机器人的前置文章,如果想要速成或者已经对计算机操作有足够了解的可以跳过这一篇
文章中可能包含大量的用词不准确不专业,大家看得懂就行。jpg
前言-qq bot的历史
更新于2026.3.4,修改了一些并不正确的描述,不过仍然有可能没有考据到位的信息
这次就当讲qq bot的历史故事一样讲讲吧,看不懂也无所谓
世上本没有路,走的人多了,便变成了路。
大约是2019年左右吧,第一次接触并自己开发qq机器人还是在酷q,酷q的易上手性使得当时有大量的各种类型的bot出现,包括但不限于骰娘。而本人当时初次接触跑团就是网团、对骰娘有很浓厚的兴趣,于是尝试自己搭建了一个基于酷q的溯洄骰(也是在这个时候与dice结下了不解之缘)酷q的好处在于、它是全图形界面,插件化,使得用户几乎不需要编程知识就可以搭建一个非常基础的bot,dice的可拓展性也给oc爱好者们一个入口来改造bot的“性格”。
然而好景不长,酷q作为最大的qq机器人框架,在2020年底宣布停运——原因是某些用户滥用机器人框架用于违法行为,其他的机器人框架也陆续宣布停止运营。开发者也好、普通的bot主也好,大家都急切地希望为自己的机器人找到下一个容身之所。虽然后来qq官方也提供了“机器人开放平台”,但是里面的许多可以说是“霸王条款”的内容让开发者们望而却步。
我们把视角放到Dice!用户上。那时骰娘占了qq bot的一半天,因此骰主们跟随当时最大的骰系——溯洄骰的开发者们的脚步,找到了两个暂时用于替代的框架。第一个叫先驱,是少数在酷q停运冲击下还没有跑路的框架,具有简单的图形界面,不过它仍然闭源、并且运行时需要连接到先驱服务器,因此不排除后续跑路风险。而第二个则是mirai。
mirai是一个开源的机器人框架,由于其开源性和易拓展性,让开发者们重新燃起了希望。mirai框架没有官方的图形界面,因而一开始吓退了很多计算机基础较差的骰主们,不过它提供了一个控制台,方便开发者们编写插件(用官方手册的话来讲,像游玩minecraft时加载mod一样)并通过插件来实现各种各样的功能。
这里我们不得不提到一个概念——mirai是kotlin编写的,这意味着正常来说你必须要使用java或者kotlin语言编写mirai插件。这就导致了两个问题:一是如果开发者不擅长甚至不会java语言,该如何编写插件?二是之前的酷q插件都不是java写的、而是许多dll,这些插件就不能再复用吗?这两个问题的解决方法是有共性的,那就是使用事件上报的模式。
事件上报的模式并不是什么罕见的操作,酷q时代就存在一款插件“cqhttp”采用了这样的模式。前面提到,酷q的插件基本都是dll,而有计算机基础的同学们都知道,dll是windows特有的文件类型,这就导致无法跨平台使用插件,并且编写门槛也很高。而cqhttp不再要求你用dll去写所有功能,而是把“qq 收到的事件”通过 HTTP 或 WebSocket 的方式发出去。比如:有人发了一条消息、有人加群、有人退群——这些事件会被打包成一段 json 数据,然后通过网络发给一个你自己写的程序。同理,你也可以将“发送消息”等等事件以网络通信的格式发给机器人框架,至于如何生产这样的事件信息——你就可以使用任意你喜欢的web开发语言了!
同理,针对上面的两个问题(使用其他语言/复用酷q插件),mirai也分别提供了mirai-api-http和mirai-native两个插件。其中曾经的Dice!作为酷q插件、也通过mirai-native再次在mirai框架中复活。
从cqhttp延展开来,大家开始意识到复用酷q插件的方便性,因此也产生了其他类似项目例如go-cqhttp等。但是,“长远来看,这可能导致不同兼容项目最终形成了各自的“CQHTTP 接口变种”,当用户深度接入其中一个兼容项目后,可能又会出现与其它变种不兼容的情况,最终仍然存在潜在的迁移困难。”(引用自onebot手册),最终,onebot应运而生。
“为了推动各 CQHTTP 兼容项目实现长远的兼容,为用户带来便利,2020 年我们通过改写原 CQHTTP 插件文档 + 引入 CQHTTP 兼容项目的新特性的方式,尝试维护一个统一的、不断发展的接口标准(即 OneBot 11 标准)。”(引用自onebot手册)。接口是什么?——比如,国内的本科生一般都会接触到“高校教务管理系统”这样的东西,那么这个系统必须至少提供查询成绩、查询课表、查询绩点等等的操作,而这些操作的集合便是接口标准(简单地来说),而具体怎么查询、查询的逻辑是什么,不同的教务系统有不同的实现方法,作为学生的我们并不关心,我们只关心如何查询。——而onebot也是如此。
自onebot诞生后,围绕onebot展开的各种项目便构成了现在主流的qq机器人生态(甚至微信、kook、discord等)
说了那么多,看不懂的估计头晕晕了()
不过这些都不重要,重要的是我们现在有了非常好的开源生态,大家可以随意选择自己最喜欢的路线来搭建自己的机器人,并且做各种个性化设置
那么来讲一些前置小知识吧
基础Q&A
github是什么,该怎么使用?
可以理解为一个代码专用的网盘,并且全公开透明,一般传到了github上的代码都可以叫开源了的代码,你可以下载这些代码或者从代码里搞出来的应用
一般来说大多数人使用的海豹骰也是在github上开源的,如果你对代码非常上手可以学习参考源代码,也可以在像应用商城里下载软件一样下载海豹骰这个“应用”,一般来说这个下载安装方式很多样,对于新手来说只要跟着教程走指哪点哪就行,实在不知道的话找找项目下有没有一个Release的按钮,应用一般放在这里
服务器是什么?
可以简单理解为一个24小时永不关机的电脑,你摸不到实体的电脑,但你可以像使用自己的电脑一样使用它。
因为bot的程序一关掉bot就不会再说话了,所以我们需要这样一个不会关机的载体来运行bot程序。
有很多途径可以购买服务器,比如腾讯云、阿里云、华为云这些大厂,有的计算机系的学生可能学校还会提供免费的云服务器,可以白嫖;购买的话便宜的有15元一个月的也有几百元的,根据自己对性能的需求选择就好啦
Linux/Windows服务器的区别是什么?该怎么选择?
和你的电脑一样,linux和windows就是两个不同的操作系统,但是一般来说都涉及bot开发了,大多数项目都会提供两个版本的,所以不用担心我买了其中一个操作系统的服务器是不是有些就不能用了
但是区别还是有的,linux用起来确实很方便,但是适合对计算机有一定基础的人使用,windows的话就可以像用自己的电脑一样用。不过真的要我推荐的话我会选择linux的......()
但是真的是新手的话用windows不会出错()
手机可以搭建吗?
答案是可以,但是我不太接触这方面,可能后续的教程不太会讲这个!等我再了解了解!
前置准备
首先,为了访问github以及避免可能的访问失败,最好准备一个梯子
这里不给出梯子的购买方式但是如果真的想要可以给我发私信
如果未来想要自己写一写代码或者做一些更进阶的修改,建议下载一个Cursor,是带有免费ai功能的代码编辑器,有什么不懂的并且我来不及回复的可以直接先问问看自带的ai(注意Cursor官网国内打不开,包括港澳台,如果有梯子请挂日本/欧美节点)
如果无法下载Cursor那可以使用Visual Studio Code,虽然没有永久免费ai功能()
最后如果你想要在qq上搭建机器人,就创建一个qq账号(或者使用已有的qq账号)。教程里会以qqbot为主,但是其实如果你了解的足够深入会发现使用的都是一套逻辑!
后续可能会持续更新这个文章
如果有对这篇文章疑惑的地方,可以在评论区或者qq上私聊我

浙公网安备 33010602011771号