如何搭建Nonebot+gocq框架使用QQ机器人

相关阅读

之前我们分享过云崽QQ机器人框架,是基于Node.js开发的

我们今天给大家分享另一款机器人框架Nonebot,配合gocq框架我们来建设一个QQ机器人

这里需要提出的是Nonebot非常强大,它还支持Telegram、钉钉、飞书、QQ频道等等一些列的机器人,同时插件也很全面,大家喜欢的可以后面自己在研究下其他的插件

效果展示

图片[1]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

支持上下文关联,譬如在要求爱心代码后,再要求给出注释!

图片[2]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

安装环境

我们这次的安装环境是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

创建项目

图片[4]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

我们选择第二个Create a New Project

然后就是一些细节的选项,我们选择在nonebot文件夹中存储插件,然后选择echo

图片[5]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后我们按需选择协议适配器

  • OneBot V11
  • 钉钉
  • 飞书
  • Telegram
  • QQ频道
  • 开黑啦
  • mirai2
  • OneBot V12
  • Console
  • Ntchat

我们这里选择了第一个默认的,当然你也可以同时选择多个

图片[6]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

安装插件

进入Nonebot目录

cd Nonebot
图片[7]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后继续运行nb

nb

我们这次可以选择plugin

图片[8]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后我们可以搜索对应的插件名称

图片[9]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog
图片[10]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后安装

图片[11]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

当然其实更方便的方式是你可以直接去官网

插件商店里查找想要使用的插件

譬如我们搜索chat,然后找到了ChatGPT插件,并且复制安装命令

nb plugin install nonebot-plugin-chatgpt
图片[12]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

配置ChatGPT插件

我们需要在.env.dev文件中,添加对应的参数

配置项必填默认值说明
CHATGPT_SESSION_TOKEN空字符串ChatGPT 的 session_token,如配置则优先使用
CHATGPT_ACCOUNT空字符串ChatGPT 登陆邮箱,未配置则使用 session_token
CHATGPT_PASSWORD空字符串ChatGPT 登陆密码,未配置则使用 session_token
CHATGPT_CD_TIME60冷却时间,单位:秒
CHATGPT_PROXIESNone代理地址,格式为: http://ip:port
CHATGPT_REFRESH_INTERVAL30session_token 自动刷新间隔,单位:分钟
CHATGPT_COMMAND空字符串触发聊天的命令,可以是 字符串 或者 字符串列表
如果为空字符串或者空列表,则默认响应全部消息
CHATGPT_TO_METrue是否需要@机器人
CHATGPT_TIMEOUT30请求服务器的超时时间,单位:秒
CHATGPT_APIhttps://chat.openai.com/API 地址,可配置反代
CHATGPT_IMAGEFalse是否以图片形式发送。
如果启动时出现 NotImplementedError 错误,请在 .env.dev 中将 fastapi_reload 设置为 False
如果无法显示文字,请点击此处查看解决办法
CHATGPT_IMAGE_WIDTH500消息图片宽度,单位:像素
CHATGPT_PRIORITY999事件响应器优先级
CHATGPT_BLOCKTrue是否阻断消息传播
CHATGPT_PRIVATETrue是否允许私聊使用

我们这里可以选择填入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

获取session_token的方法

  1. 登录 https://chat.openai.com/chat
  2. 按 F12 打开控制台
  3. 切换到 Application/应用 选项卡,找到 Cookies
  4. 复制 __Secure-next-auth.session-token 的值,配置到 CHATGPT_SESSION_TOKEN 即可
图片[14]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog
图片[15]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

运行NoneBot框架

当你的插件都安装完成之后,就可以启动机器人了

图片[16]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

常见报错

[ERROR] uvicorn | [Errno 98] Address already in use

图片[17]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

则需要调整.env.dev中的PORT端口,随便改一个不是8080的,而且没有被占用的就好了

图片[18]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

配置Go-cqhttp

下载go-cqhttp_linux_amd64.tar.gz

我们可以创建一个Go-cq的文件

图片[19]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

进入Go-cq,然后将上面的go-cqhttp_linux_amd64.tar.gz解压到其中

图片[20]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后我们运行

./go-cqhttp

我们选择3,反向Websocket通信

图片[21]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

接下来会自动创建config.yml , 其中 config.yml 为运行配置的文件

我们编辑config.yml

图片[22]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

我们需要设置好要登陆的QQ号,密码可以不填,到时候运行就会弹二维码让我们去扫

图片[23]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

由于我们刚才选择的反向代理,则这里需要配置(注意这里的端口号要和上面的Nonebot设置的PORT端口一致)

      universal: ws://127.0.0.1:8531/onebot/v11/ws
图片[24]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

启动QQ机器人

然后将Nonebot v11框架启动

python3.9 bot.py

然后启动go-cq

./go-cqhttp
图片[25]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

扫完码就可以愉快的使用机器人了!

后台运行的技巧

screen命令运行

我们先安装screen,这里是centos的安装方式

yum install screen

先创建一个窗口运行Nonebot框架

screen -R Nonebot

然后启动Nonebot框架

python3.9 bot.py
图片[26]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

然后按住ctrl+A+D退出此窗口

此时,在Go-cq目录下,进入另一个窗口

screen -R gocq

然后运行

./go-cqhttp

宝塔后台运行

如果你会screen,当然你可以开两块屏幕去运行,我们这里教大家用宝塔的应用管理器

图片[27]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

由于我们是手动安装的Python3.9.16,故环境要自己去添加

图片[28]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog
图片[29]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

配置好运行的文件和路径

图片[30]-如何搭建Nonebot+gocq框架使用QQ机器人-FancyPig's blog

© 版权声明
THE END
喜欢就支持一下吧
点赞18赞赏 分享
评论 共11条

请登录后发表评论

      • FancyPig的头像-FancyPig's blog汉堡会员FancyPig徽章-备受瞩目-FancyPig's blog等级-LV10-FancyPig's blog作者1
      • FancyPig的头像-FancyPig's blog汉堡会员FancyPig徽章-备受瞩目-FancyPig's blog等级-LV10-FancyPig's blog作者0