天天看点

【SpringBoot】教你写个QQ机器人(1)准备哪些东西呢

                           教你写个QQ机器人(1)准备哪些东西呢

有一天,我的高中同学,闲着没事做着二手车倒腾生意。突然给我提了一个需求,说我能不能实现一个机器人。它能够监控群消息,如果有人发了设定好的关键词,比如二手车,就立马把这个人的QQ号转发给他,接下来去谈生意。

我一想,这怎么监控群消息啊,难度有点高啊(这个时候我丝毫没意识其实早就出现了这种技术,只不过Java语言实现的很少)。我挺感兴趣,但不知道从何入手,在百度数次之后,发现了酷Q这个好东西!但奈何这个应用非Java编写,我无法制作插件,无法满足自己个性化的需求。这个时候,突然发现了CQHTTP这个开源插件,通过HTTP协议与本机的酷Q进行交互,并开放接口,那我就可以在SpringBoot项目中请求接口不就好了吗,好了,现在理清思绪,开始动手。

在历经两天的熬夜之后,终于将这个机器人搞完了。(我是带着熊猫眼写下这篇文章的)

目前这个QQ机器人能够实现的功能有垃圾分类查询与群关键词监控,功能还在添加中。用Java语言编写的后台,配合缓存与数据库提高查询效率。话不多说,一起来看看是怎么实现的吧。

前置要求

本教程基于酷Q Air版本,详情见酷Q Air 5.14 ~ 轻盈,梦想,新生 ~

基于CoolQ HTTP API 插件插件,详情见[免费(开源)]HTTP API 插件,其文档见CoolQ HTTP API 插件

这个插件通过 HTTP 对酷 Q 的事件进行上报以及接收 HTTP 请求来调用酷 Q 的 DLL 接口,从而可以使用其它语言编写酷 Q 插件。

Java:1.8版本,有些地方用到了Lamdba表达式

Mysql,可要可不要,在做垃圾分类模块时,我把用户每次查询出来的数据存入了Mysql中

Redis,可要可不要,同样是在垃圾分类模块中,为了增加查询速度的。用户查询垃圾分类时,先在Redis中查询,查不到再去Mysql中查询,再查不到就去请求外部api,api地址见垃圾分类查询。查询出结果后,再存入数据库,再存入Redis中。

后端技术:SpringBoot

开始安装

Java、Redis、Mysql怎么安装的我就不说了。

酷Q Air:去官网下载酷Q Air图灵版或小i版,直接解压即可。

之后跟着[免费(开源)]HTTP API 插件中的使用方法-手动安装板块一步一步安装好,登录酷q,重载应用,启用此插件,遇到错误后,可能需要装个vc++ 2017运行库,安装好后,再次启用此插件,然后这个插件会开启一个http服务器,默认占用5700端口,在设置post_url后,此服务器会将QQ收到的消息上报给post_url,在post_url响应里可以设置是否回复,是否@等。

开始配置

在酷Q的解压目录下的酷Q Air\data\app\io.github.richardchien.coolqhttpapi\config下,会有与刚才登陆的QQ号对应的json配置文件,如图所示,配置post_url即可

【SpringBoot】教你写个QQ机器人(1)准备哪些东西呢

启动酷Q并启用插件后,会弹出一个cmd命令行,上面记录着HTTP服务器的请求与回复信息,我们的SpringBoot项目还未开启,也没有制定post_url接口,因此现在HTTP服务器暂时无法向接口上报。

启用coolqhttpapi插件后,插件打开了一个命令行输出界面,具体如下:

【SpringBoot】教你写个QQ机器人(1)准备哪些东西呢

接着我们在SpringBoot编写该Controller,用来接收插件上报的消息。

开启SpringBoot之旅,编写实际的代码见教你写个QQ机器人(2)

继续阅读