huangx607087基于GoCq的QQ-Bot 开发日记
0x00.About
先来说说自己为什么这么想要个机器人。
2014年初,自己家里安装了wifi,然后自己当年的一部小手机联想A278t就可以联网了。于是我就可以下载了一个手机QQ开始玩(注:自己QQ虽然是2010年申请的,但自己在2010-2013年年底基本没用过QQ)。然后当年自己喜欢玩开罗游戏,单机的,一个游戏不到10M,然后加了几个讨论群。其中有个讨论群里一个自动聊天机器人,带签到功能和各种娱乐功能的。自己就感觉很好玩。然后当时就下了个coolQ,顺带着搞了点插件,放在一个群里面。到现在打开家里Windows 7的旧电脑,当年的磁盘内部文件都还在呢!
然后高考结束发现coolQ这个玩意SPFA了,感叹自己以前生活回不去之余,也就没啥搞的了(。不过开学发现Lakphy和PiCpo两位开发大佬玩树莓派搞了个基于Mirai的机器人驮载在Ubuntu系统的树莓派上,自己也很羡慕,7月4日Lakphy帮我搞的时候搞崩了。中间也搞了几次很烦躁,因为都失败了。昨天有幸在官方群里有大佬手把手教我搞,在群里大佬们的帮助下,我搞成功了。。特此写下这篇文章给以后还想开发机器人的人进行参考学习,或者给已经开发好自己bot的人开辟另一条道路。
由于自己主机已经装有Python3.7.4和很多为了打CTF的包,加上很多复杂的环境变量,为了不与自己的Windows 10实体机上的内容冲突,机器人驮载在了虚拟机上。(因为Win10的激活脚本我没搞到加上配置要求太高,Win7很多系统上的内容太旧了,并且用得不习惯,Linux我也不怎么熟悉)。于是选择与Windows 10共同点较多的 Windows 8系统作为自己Bot的Server。
本教程基本上是自己做过一遍后然后手把手教的,一切从0环境开始配起!机器人服务Server使用Windows7/8/10系统。11的可以效仿,按道理是可以的,不过我没试过
nonebot手册网址 点这里
0x01.环境的准备与配置
1o01 开发环境一览
Windows 7/8/10 系统,本博客使用的是Windows 8虚拟机系统。当然你也可以使用你Windows 7/8/10实体机,Linux大佬可以使用树莓派的Linux系统。
个人建议如果使用虚拟机,找不到Windows 10还是选择Windows 7比较好,Windows 8安装比较麻烦
Python 3.9+和VsCode,本样例中使用的是Python 3.9.6,一定要保证Python版本高于3.9
如果你已经满足了开发环境,请跳过整个0x01环境配置阶段 。
下图是空空的一个Windows 8 的截图,然后我们就可以一步一步配置环境了。可以看出,Windows 8界面跟Windows 7还是挺像的
注:如果想使用Windows虚拟机作为机器人的Server的话,可以在这里寻找激活脚本。
由于Windows 8自带浏览器是IE 11,用的比较low,我下了个Edge浏览器
1o02 Python的下载与配置(包括pip)
登录Python下载官网,选择 Python 3.9.6 ,下载页面建议选择Windows Installer(64-bit)
开始安装的时候,建议把下面两个勾都打上,然后点Install Now等待安装成功
在桌面上创建一个1.py
文件右击用IDLE进行编辑,如果能按F5
运行成功就算安装成功了。
当然,Python到现在还没有结束,我们需要配置一下Python pip。
直接在C盘根目录下搜python39,然后打开就行了
打开Python39这个文件夹,再打开Scripts,可以看到pip在这个文件夹中。
右击pip,可以看到pip的位置,将这个位置完全复制下来。
右击“这台电脑”,(Win7是我的电脑/Win10是此电脑),然后依次点击”高级系统设置“、”环境变量“。然后在环境变量中找到Path,点编辑。
将鼠标光标移到最后前面的是系统变量,千万不要删。不过Windows 10的系统变量是表格的形式,很方便。
在后面加一个分号,然后把刚才复制pip的位置加到后面就行了。
然后我们打开cmd,输入pip,如果能出现pip菜单说明pip配置成功。配置成功截图如下
1o03 VSCode的下载与配置
使用VSCode,是为了在后面能够更好的编辑Python
文件和各种配置文件
直接点机右上角Download,然后选择Windows 64版本(Linux选择Linux版本)进行下载安装即可。这里安装时可以直接无脑地Next。
到此为止,我们的必要环境配置完成。下面我们就来真正地来准备我们的机器人吧。
0x02 机器人的配置
2o01 初始内容
配置机器人首先我们会选择我们机器人的文件夹。(此处我直接选择了D盘根目录下面因为我用的是虚拟机)。
打开我们需要的文件夹,为方便期间,最好保证文件夹一开始为空
2o02 通过脚手架安装nonebot
打开cmd,在cmd中输入 pip install nb-cli
。非管理员用户需要在后面加上--user
,Windows后面所有命令均如此。
然后他就会给你安装一大堆必要的东西。。。
安装成功的标准是你在python中输入import nonebot
不报错并且你在cmd中输入nb
会出现如下界面
同理,我们还要安装适配器,输入命令:pip install nonebot-adapter-cqhttp
,按回车安装。装完这个后同时装一下pip install nonebot-adapter-gocq
。
这两个东西安装好之后,我们可以将内容切换到我们的文件夹中了
Windows CMD中有几个命令注意一下
1 | d: (表示直接将cmd所在磁盘切换到D盘) |
然后我们就可以切换到我们要配置机器人的地方了。我这边选择的就是D盘根目录。并在此输入nb create
后按回车
然后输入我们的项目名称,这里叫example,然后按回车
第二步问你文件夹名字是什么,选1和2都行,不过建议选1,因此如果左边灰色的a在1旁边,直接按回车即可
第三步,在里面输入一个y再按回车。
第四步:当灰色的a在cqhttp左边时,先按空格,然后按回车
然后我们的目录下就多了个文件夹,打开看看有这些东西。
2o03 配置Gocq
访问截图中的网址下载,下载go-cqhttp_windows_amd64.exe,19.9M的那个
然后exe下载好后,在example外面建立一个gocq,将下载下来的exe放进去
然后把该exe在cmd中运行。如果它让你输数字的话,只输入一个3
就行了!
然后下面就要注意了,打开文件夹,里面有个config.yml
文件,用VSCode打开。然后在最前面的指定位置输入你的机器人的QQ账号,密码保持空着
然后在最后的ws-reverse一栏里的内容改成这个样子,保存即可。
然后所有该配置的内容我们就都配置好了。
2o04 启动bot
重启gocq,第一次运行需要扫码登录
登录成功场景。此时如果挂着肯定会报错,因为还有个东西没开
再开一个cmd,进入example文件夹,然后给命令nb run
如果出现accepted的字样,并且我们开的第一个cmd不再出现新的”无法连接”的报错,说明此时已经好了。
私聊或者在群里@机器人 发送/echo hello world
,那我们就有第一次对话了。
0x03 机器人插件开发
插件模板代码如下:
1 | from nonebot import on_command |
打开我们的example机器人目录,然后发现里面还有个example,再打开这个文件夹还有个plugins,将这个代码保存成py文件,拖入就可以用了。
可以看到加载了weather的插件
这个时候我们的bot就可以按照里面的算法来做事了。当然,以这个插件为模板,我们可以开发更多的插件。
一定要注意的是,只有string类型的东西才能被发送出去,如果不是string类型(比如想发送数字)要先转成string类型!然后才能发出去!