相关阅读
之前我们分享过云崽QQ机器人框架,是基于Node.js开发的
我们今天给大家分享另一款机器人框架Nonebot,配合gocq框架我们来建设一个QQ机器人
这里需要提出的是Nonebot非常强大,它还支持Telegram、钉钉、飞书、QQ频道等等一些列的机器人,同时插件也很全面,大家喜欢的可以后面自己在研究下其他的插件
效果展示
![图片[1]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210154508638-1024x705.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
支持上下文关联,譬如在要求爱心代码后,再要求给出注释!
![图片[2]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210160724987.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
安装环境
我们这次的安装环境是Linux,我们主要给大家演示在服务器中如何安装Nonebot
Python安装
我们这里采用手动安装方式,可以参考之前的教程
我们使用下面的命令安装python3.9.16环境
curl -O https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tar.xz
解压
tar -xf Python-3.9.16.tar.xz
进入Python-3.9.16
cd Python-3.9.16
生成配置文件
./configure --enable-optimizations
编译安装
make -j 12
sudo make altinstall
安装nb-cli
温馨提示:我这里由于业务环境比较复杂,就没有将python3.9设置默认用python3执行,所以我后面的命令都是python3.9以及对应的pip3.9;如果您是首次安装python环境,则可以使用默认的python3以及对应的pip3
pip3.9 install nb-cli
![图片[3]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210133737333.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
创建项目
![图片[4]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210135938931.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们选择第二个Create a New Project
然后就是一些细节的选项,我们选择在nonebot文件夹中存储插件,然后选择echo
![图片[5]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140146719.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后我们按需选择协议适配器
- OneBot V11
- 钉钉
- 飞书
- Telegram
- QQ频道
- 开黑啦
- mirai2
- OneBot V12
- Console
- Ntchat
我们这里选择了第一个默认的,当然你也可以同时选择多个
![图片[6]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140300580.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
安装插件
进入Nonebot目录
cd Nonebot
![图片[7]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140543237.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后继续运行nb
nb
我们这次可以选择plugin
![图片[8]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140704325.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后我们可以搜索对应的插件名称
![图片[9]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140804305.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[10]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140814714.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后安装
![图片[11]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210141006802.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
当然其实更方便的方式是你可以直接去官网
在插件商店里查找想要使用的插件
譬如我们搜索chat
,然后找到了ChatGPT插件,并且复制安装命令
nb plugin install nonebot-plugin-chatgpt
![图片[12]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210140905126-1024x549.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
配置ChatGPT插件
我们需要在.env.dev文件中,添加对应的参数
配置项 | 必填 | 默认值 | 说明 |
---|---|---|---|
CHATGPT_SESSION_TOKEN | 否 | 空字符串 | ChatGPT 的 session_token,如配置则优先使用 |
CHATGPT_ACCOUNT | 否 | 空字符串 | ChatGPT 登陆邮箱,未配置则使用 session_token |
CHATGPT_PASSWORD | 否 | 空字符串 | ChatGPT 登陆密码,未配置则使用 session_token |
CHATGPT_CD_TIME | 否 | 60 | 冷却时间,单位:秒 |
CHATGPT_PROXIES | 否 | None | 代理地址,格式为: http://ip:port |
CHATGPT_REFRESH_INTERVAL | 否 | 30 | session_token 自动刷新间隔,单位:分钟 |
CHATGPT_COMMAND | 否 | 空字符串 | 触发聊天的命令,可以是 字符串 或者 字符串列表 。如果为空字符串或者空列表,则默认响应全部消息 |
CHATGPT_TO_ME | 否 | True | 是否需要@机器人 |
CHATGPT_TIMEOUT | 否 | 30 | 请求服务器的超时时间,单位:秒 |
CHATGPT_API | 否 | https://chat.openai.com/ | API 地址,可配置反代 |
CHATGPT_IMAGE | 否 | False | 是否以图片形式发送。 如果启动时出现 NotImplementedError 错误,请在 .env.dev 中将 fastapi_reload 设置为 False 如果无法显示文字,请点击此处查看解决办法 |
CHATGPT_IMAGE_WIDTH | 否 | 500 | 消息图片宽度,单位:像素 |
CHATGPT_PRIORITY | 否 | 999 | 事件响应器优先级 |
CHATGPT_BLOCK | 否 | True | 是否阻断消息传播 |
CHATGPT_PRIVATE | 否 | True | 是否允许私聊使用 |
我们这里可以选择填入CHATGPT_SESSION_TOKEN,也可以选择填入账户
这里演示一下填入CHATGPT_SESSION_TOKEN的方式,修改.env.dev
HOST=127.0.0.1
PORT=8080
LOG_LEVEL=DEBUG
FASTAPI_RELOAD=true
在最下方添加
CHATGPT_SESSION_TOKEN=你的session_token
![图片[13]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210143437492-1024x130.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
获取session_token的方法
- 登录 https://chat.openai.com/chat
- 按
F12
打开控制台 - 切换到
Application/应用
选项卡,找到Cookies
- 复制
__Secure-next-auth.session-token
的值,配置到CHATGPT_SESSION_TOKEN
即可
![图片[14]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210143135263-1024x641.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[15]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210143349760.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
运行NoneBot框架
当你的插件都安装完成之后,就可以启动机器人了
![图片[16]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210141229385.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
常见报错
[ERROR] uvicorn | [Errno 98] Address already in use
![图片[17]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210143620320.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
则需要调整.env.dev中的PORT端口,随便改一个不是8080的,而且没有被占用的就好了
![图片[18]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210143653128-1024x110.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
配置Go-cqhttp
下载go-cqhttp_linux_amd64.tar.gz
我们可以创建一个Go-cq的文件
![图片[19]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210145802871.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
进入Go-cq,然后将上面的go-cqhttp_linux_amd64.tar.gz解压到其中
![图片[20]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210150031807.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后我们运行
./go-cqhttp
我们选择3,反向Websocket通信
![图片[21]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210150548328.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
接下来会自动创建config.yml
, 其中 config.yml
为运行配置的文件
我们编辑config.yml
![图片[22]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210150800673.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们需要设置好要登陆的QQ号,密码可以不填,到时候运行就会弹二维码让我们去扫
![图片[23]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210150848451.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
由于我们刚才选择的反向代理,则这里需要配置(注意这里的端口号要和上面的Nonebot设置的PORT端口一致)
universal: ws://127.0.0.1:8531/onebot/v11/ws
![图片[24]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210151235862.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
启动QQ机器人
然后将Nonebot v11框架启动
python3.9 bot.py
然后启动go-cq
./go-cqhttp
![图片[25]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210152317846.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
扫完码就可以愉快的使用机器人了!
后台运行的技巧
screen命令运行
我们先安装screen,这里是centos的安装方式
yum install screen
先创建一个窗口运行Nonebot框架
screen -R Nonebot
然后启动Nonebot框架
python3.9 bot.py
![图片[26]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210155702706.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后按住ctrl+A+D退出此窗口
此时,在Go-cq目录下,进入另一个窗口
screen -R gocq
然后运行
./go-cqhttp
宝塔后台运行
如果你会screen,当然你可以开两块屏幕去运行,我们这里教大家用宝塔的应用管理器
![图片[27]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210152009867-1024x372.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
由于我们是手动安装的Python3.9.16,故环境要自己去添加
![图片[28]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210151943204.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
![图片[29]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210151913320.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
配置好运行的文件和路径
![图片[30]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/12/20221210152227412.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
- 最新
- 最热
只看作者