nonebot-QQ智障机器人(部署)
NoneBot ,利用 OneBot 实现的 Python 异步机器人框架。现在的版本已经是 v2了,要求 Python >= 3.7.3 ,通过插件化的形式,将消息分发到命令处理器和自然语言处理器,完成具体功能,拓展性挺强的。整一个玩玩,顺手写一个傻瓜式笔记记录。
开始
开始之前,确保 python 在3.7.3 以上,后续安装的是 v2 版本,所以先将原来的卸载了
1 | pip uninstall nonebot |
其他需要补充的前提
- 了解 python 异步机制
- 了解 PEP 484,NoneBot2 用此实现类型注解
- 改进编辑器
编辑器我使用 VS code ,推荐也是使用这个。使用 pylance
Language Server 并启用 Type Checking
的 basic
模式以达到最佳开发体验。
VS code 配置插件 pylance、jupyter
配置虚拟环境
一般来说 venv 一个就行了,但是既然都开了大坑,干脆就把 Anaconda 也装上。
在 Ubuntu 安装 Anaconda ,首先在官网下载安装包,是 .sh 后缀的,依据文档进行校验安装。
1 | #检验完整性 |
然后创建虚拟环境nonebot。
避免风控
一般来说,QQ机器人被tx风控是正常的事。据说不要经常群发、链接、图片。还有建议不要太嘲讽,把机器人部署到腾讯云里。反正我反手把QQ塞到挂号平台开一个月刷刷活跃,服务器也是自己组的,部署运行几天看看。
安装
一般还是装个脚手架比较方便。
1 | pip install nb-cli |
驱动器安装
文档说默认内置 fastapi
服务端,一般来说是不够的。
1 | # 查看驱动器列表 |
或者去NB2商店复制安装驱动器。
协议适配器
同样地,NB2商店也可以直接装。
1 | nb adapter list |
第三方插件
同样,
1 | nb plugin list |
go-cqhttp
下载最新的 Release,解压并初始化(运行go-cqhttp),开启自动配置,以 ubuntu 为例
- 解压目录下(建议放到机器人目录),打开终端,
./go-cqhttp
执行命令,选择“反向 Websocket 通信”,等待初始化config.yml
。 - 配置
config.yml
,更改帐号,不需要填密码,设置反向 ws universal 的地址。为:ws://127.0.0.1:port/onebot/v11/ws - 文件说明:device.json 保存设备信息,务必不要删除,go-cqhttp:用于启动程序,session.token:QQ登录服务器后产生的token,后续不用再次扫码。如果以后登录不上,删除后重新扫码登录。
创建项目
到目标目录下,激活虚拟环境
1 | conda info -e |
创建项目
1 | nb creat |
之后的启动在目录下,不要遗漏激活虚拟环境
1 | nb run |
目录结构
bot/plugins
或src/plugins
: 用于存放编写的 bot 插件.env
、.env.dev
、.env.prod
: 各环境配置文件bot.py
: bot 入口文件pyproject.toml
: 项目插件配置文件Dockerfile
、docker-compose.yml
: Docker 镜像配置文件
配置
.env
文件内设置使用 dev
或 prod
的配置,随便哪个都行。
对应的配置文件如下
1 | HOST=127.0.0.1 #配置监听的IP/主机 |
初次调试
环境配置完成后,命令行执行
nb run
或者在 IDE 内以非调试模式运行,但不建议。nonebot 开启后,到gocq目录下执行
./go-cqhttp
以打开 gocq 。一般来说上述两步执行完就完成 hello world 了。打开QQ对机器人发送信息
/echo hello world
,有正常回复就算完成了初始化搭建。
参考
nonebot-QQ智障机器人(部署)