0. 基本理念 & 前期准备

现在在藤子的管控下个人bot是真难搞。如果直接问GPT还在给你推荐go-cqhttp,有点不像人类。

本文如标题所言采用Lagrange.Onebot+NoneBot2开发,其中Lagrange是前端,直接对接QQ api,接收课发送消息;Onebot是一个协议,即该框架下Lagrange提供Onebot协议中要求提供的各种api;NoneBot2是后端,利用前端提供的各种api间接管理QQbot的行为。此外常用的前端还有NapCat,后端还有Koishi等。
PS: Lagrange.Onebot在文档中提示已经停止更新,但是本文写作时仍在提交contribution,另外NapCat据说风控概率较高,如果熟悉C#的话可以尝试使用追进Lagrange.Core v2的更新自己开发插件。

需要服务器一台,尽量大内存,对CPU要求不高,推荐Linux环境开发。

1. 部署Lagrange

总参考文档
推荐使用Docker部署,参考文档

若是首次使用docker,注意参考文档提供的指令中8081:8081指的是宿主机8081端口映射到容器的8081端口。容器可以当作一个虚拟机,可以进入容器进行操作,也可以在默认/path-to-data路径下编辑容器内文件。注意,使用容器后宿主机8081端口被占用,后续不可再使用。

部署完成后,通过docker logs [你的容器名]查看登陆二维码登录,登陆后应该可以看到bot接收信息。容器名可以通过docker ps来查看。

2. 部署NoneBot2

参考文档

注意,Lagrange.Onebot并未适配Onebot v12,选择适配器时注意选择Onebot v11。
可以选择Console用于调试,在调试完成后可以选择在bot目录下pyproject.toml中找到Console并删除。
若可以正常使用自带的echo插件即可。

3. 连接Lagrange 和 NoneBot2

  • 注意:本节均按照默认配置下的文件目录,若有修改过请自行更改。

主要修改/path-to-data/appsettings.json和bot目录下的.env文件。

首先将.env.prod文件重命名为.env,若已存在则替换其内容。
主要参数:

1
2
HOST=0.0.0.0
PORT=xxxx // 用于连接Lagrange的端口,注意不要与容器端口重复

其次是/path-to-data/appsettings.json
主要参数:

1
2
3
4
5
6
7
8
9
10
11
"Implementations": [
{
"Type": "ReverseWebSocket",
"Host": "172.17.0.1", // 如果是新建在容器内,此处填写容器的网桥
"Port": xxxx, //上方NoneBot2连接Lagrange的端口
"Suffix": "/onebot/v11/ws",
"ReconnectInterval": 5000,
"HeartBeatInterval": 5000,
"AccessToken": ""
}
]
其中容器网桥可以通过docker network inspect bridge查询。 # 4. 插件探索 & 自定义 参考NoneBot2文档即可。

其实感觉根本没什么可写的,只是记录了一下自己踩的一些坑,而且现在也还有很多没解决的问题,等什么时候解决了再另写吧。