【教程】Nonebot + Lagrange 实现自己的QQ机器人

【教程】Nonebot + Lagrange 实现自己的QQ机器人

Nonebot + Lagrange 实现自己的QQ机器人

最近看到有一些朋友自己设计了一些QQ机器人用于管理QQ群与增加群活跃度等,于是想着自己研究一下这些东西怎么做,一边研究,一边也写篇文章,分享一下以便大家可以快速上手。

另外,网上其实是有很多相关教程的,但个人感觉不够深入,如果有时间,我希望在这篇文章的后半部分详细深入说一说并加入一些实践案例。

这篇文章主要面对的是Windows系统。Linux与MacOS当然也可以,只是我没有相应的系统,没办法作演示。

搭建

Lagrange 安装

首先,我们安装Lagrange程序。

在Github上找到Lagrange程序,下载最新版本的 Lagrange.Onebot。

【Lagrange.Onebot】

我这里是Windows 11的64位系统,下载如图所示的压缩包。

解压后会得到好多级文件夹,在最里面可以找到我们最关心的 Lagrange.Onebot.exe文件。

将其转移到我们的项目文件夹下。

双击运行程序,程序会启动一个命令行窗口,你将看到如下界面。

此时,在项目根目录下,Lagrange帮我们生成了一个appsetting.json文件,我们需要对其进行配置,将下面的配置替换到配置文件中。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

{

"Logging": {

"LogLevel": {

"Default": "Information",

"Microsoft": "Warning",

"Microsoft.Hosting.Lifetime": "Information"

}

},

"SignServerUrl": "https://sign.lagrangecore.org/api/sign/25765",

"MusicSignServerUrl": "",

"Account": {

"Uin": 0,

"Password": "",

"Protocol": "Linux",

"AutoReconnect": true,

"GetOptimumServer": true

},

"Message": {

"IgnoreSelf": true,

"StringPost": false

},

"QrCode": {

"ConsoleCompatibilityMode": false

},

"Implementations": [

{

"Type": "ReverseWebSocket",

"Host": "127.0.0.1",

"Port": 8080,

"Suffix": "/onebot/v11/ws",

"ReconnectInterval": 5000,

"HeartBeatInterval": 5000,

"AccessToken": ""

}

]

}

关于上面的配置,后面我们可能会进行说明,这里就不做介绍了。

按照要求,配置之后,在命令行窗口中按下任意键继续程序。之后你将看到一个偌大的二维码,你需要使用需要充当机器人的QQ账号扫描二维码进行登录。

当你看到这些信息时,说明你已经成功登录了。

最后,Lagrange在项目根目录下生成了好多文件。我们暂时不用管。

NoneBot2 安装

注意,我们使用的Python版本要大于等于3.9,如果你没有安装Python,请先安装。如果已经安装python,请使用

1

python --version

查看版本号。

检查版本号大于等于3.9后,让我们进行接下来的步骤。

创建虚拟环境

在项目的根目录下,使用下面的命令创建虚拟环境。

1

python -m venv .venv

创建完成后,我们需要激活虚拟环境。

1

.venv\Scripts\activate

激活成功后,你会发现命令行窗口的前缀变成了虚拟环境的名称。

❓为什么要使用虚拟环境?参阅此处

在这种情况下,我们使用

1

pip list

理论上返回的包依赖列表中应该只会有pip这一个包。

安装NoneBot2官方脚手架

在激活虚拟环境后,我们使用下面的命令安装NoneBot2。

1

pip install nb-cli

安装完成后,我们可以使用下面的命令检查是否安装成功。

1

pip list

理论上返回的包依赖列表中应该会有nb-cli这个包。

创建项目

使用下面的命令创建项目。

1

nb create

按照提示,我们依次选择

simple

输出您的项目名称,这里我输入QQBot

选择OneBot V11适配器

选择FastAPI驱动器

选择插件存储位置为src

键入Y立即安装依赖

因为我们已经在虚拟环境下,所以这里我们不在创建虚拟环境,键入n。

接下来他会询问选择那些内置的插件,这里我们什么都不选择。

创建成功,你会看到如下界面。

按照提示,我们进入项目目录并启动我们的机器人。

1

2

cd QQBot

nb run --reload

注意,这里我们需要同时运行lagrange与nonebot。

现在,我们的机器人已经启动成功了!你可以在命令行窗口看到connection open,说明Lagrange已经与nonebot建立了连接。

恭喜你,你已经成功搭建了一个基于NoneBot2的QQ机器人!

测试

在src/plugins目录下新建test.py文件,写入以下内容

1

2

3

4

5

6

7

8

9

10

11

from nonebot import on_regex

from nonebot.typing import T_State

from nonebot.adapters.onebot.v11 import GroupMessageEvent, Bot, Message

Test = on_regex(pattern=r'^test$',priority=1)

@Test.handle()

async def Test_send(bot: Bot, event: GroupMessageEvent, state: T_State):

msg = "我启动成功啦!!!"

await Test.finish(message=Message(msg))

保存后,在有该QQ号的群里发送test,机器人就会回复我启动成功啦!!!,说明我们已经成功搭建好了我们的QQ机器人。

✔️先写这些吧,后续会再进行内容的补充!