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

作者:FancyPig | 发布时间: | 更新时间:

相关阅读

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

data-postsbox="{"id":28400,"title":"如何搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot)","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":15476,"comment_count":90,"category":"knowledge","is_forum_post":false}">{"id":28400,"title":"如何搭建一个基于ChatGPT的QQ机器人(Yunzai-Bot)","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":15476,"comment_count":90,"category":"knowledge","is_forum_post":false}

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

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

效果展示

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

安装环境

我们这次的安装环境是Linux,我们主要给大家演示在服务器中如何安装Nonebot

Python安装

我们这里采用手动安装方式,可以参考之前的教程

data-postsbox="{"id":26967,"title":"CentOS8 如何手动编译安装任意版本Python","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":1283,"comment_count":4,"category":"project","is_forum_post":false}">{"id":26967,"title":"CentOS8 如何手动编译安装任意版本Python","author":"FancyPig","author_id":1,"cover_image":"","cover_video":"","views":1283,"comment_count":4,"category":"project","is_forum_post":false}

我们使用下面的命令安装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

创建项目

我们选择第二个Create a New Project

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

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

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

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

安装插件

进入Nonebot目录

cd Nonebot

然后继续运行nb

nb

我们这次可以选择plugin

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

然后安装

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

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

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

nb plugin install nonebot-plugin-chatgpt

配置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

获取session_token的方法

  1. 登录 https://chat.openai.com/chat
  2. 按 F12 打开控制台
  3. 切换到 Application/应用 选项卡,找到 Cookies
  4. 复制 __Secure-next-auth.session-token 的值,配置到 CHATGPT_SESSION_TOKEN 即可

运行NoneBot框架

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

常见报错

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

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

配置Go-cqhttp

下载go-cqhttp_linux_amd64.tar.gz

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

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

然后我们运行

./go-cqhttp

我们选择3,反向Websocket通信

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

我们编辑config.yml

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

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

      universal: ws://127.0.0.1:8531/onebot/v11/ws

启动QQ机器人

然后将Nonebot v11框架启动

python3.9 bot.py

然后启动go-cq

./go-cqhttp

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

后台运行的技巧

screen命令运行

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

yum install screen

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

screen -R Nonebot

然后启动Nonebot框架

python3.9 bot.py

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

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

screen -R gocq

然后运行

./go-cqhttp

宝塔后台运行

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

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

配置好运行的文件和路径

标签:qq机器人, qq机器人怎么弄, qq机器人免费版, qq机器人怎么制作, qq机器人怎么编程, qq机器人购买平台, QQ机器人插件, qq机器人插件怎么用, qq机器人插件怎么编程, qq机器人插件大全, QQ机器人插件定制, MYQQ机器人, myqq机器人官网, myqq机器人官网论坛, myqq机器人插件, myqq机器人插件后缀, myqq机器人插件安装, QQ机器人自定义API, QQ机器人自定义接口, 手机qq机器人怎么弄, nonebot, nonebot安装, nonebot使用, onebot教程, onebot安装, gocq, 钉钉机器人, 飞书机器人, OneBot V11, QQ频道机器人, Telegram机器人, mirai2机器人, Ntchat机器人