nonebot-qq频道适配器教程

本文最后更新于:2023年12月15日 晚上

大家好,今天教大家一期,使用nonebot的qq频道适配器去对接官方的频道bot,你需要准备以下工具

  • 一台电脑
  • python环境
  • 去官方申请的key
  • vscode (其他代码编辑器也行)

申请官方key

登录QQ开发平台,没有账号可以去注册一个号,我这边已经注册好了

我这里已经申请到key了,你申请之后官方会给你三个票据

bot_app_id 用于识别一个机器人的 id
bot_secret 用于在 oauth 场景进行请求签名的密钥
bot_token 机器人token,用于以机器人身份调用 openapi,格式为 appid.{app_id}.{random_str}

这三个东西非常重要 接下来我们去下载nonebot封装的适配器

下载适配器

手动下载

打开powershell输入如下命令

1
2
nb adapter install nonebot-adapter-qqguild
nb driver install nonebot2[aiohttp]

安装适配器后 打开你的插件目录 找到pyproject.toml

adapters适配器里添加qq频道适配器

1
2
3
adapters = [
{ name = "QQ 频道", module_name = "nonebot.adapters.qqguild" }
]

再找到.env文件

DRIVER=~fastapi

改成

1
2
ENVIRONMENT=dev
DRIVER=~aiohttp

懒人安装

在创建项目的时候 把驱动器改成aiohttp 同时适配器选择qq频道

使用

完事之后,打开你的env.dev.

输入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
QQGUILD_BOTS='
[
{
"id": "xxx", #这里是bot_id
"token": "xxx", # 这里是 bot_secret
"secret": "xxx", # 这里是bot_token
"intent": {
"guild_messages": true,
"at_messages": false
}
}
]
'

保存

在当前目录下启动nb

1
2
07-20 19:59:42 [INFO] nonebot | QQ Guild | Bot ********* connected
07-20 19:59:42 [SUCCESS] nonebot | QQ Guild ********** | [READY]: {'version': 1, 'session_id': '********************', 'user': {'id': **********, 'username': '*****', 'avatar': None, 'bot': True, 'union_openid': None, 'union_user_account': None}, 'shard': (0, 1)}

如果出现上述东西 说明已连接成功 可以自由收发消息了

插件示例

这里只展示一些基础写法,可以参考一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from nonebot import on_fullmatch
from nonebot.adapters.qqguild import MessageEvent, MessageSegment

a = on_fullmatch("/获取用户id")

@a.handle()
async def _(event: MessageEvent):
await a.finish(f"你的用户id为:{event.get_user_id()}")

b = on_fullmatch("/你好")

@b.handle()
async def _(event: MessageEvent):
await b.finish(MessageSegment.reference(event.id)+"你也好呀!")


nonebot-qq频道适配器教程
http://blog.bingyue.top/2023/07/20/nonebot_guild/
作者
bingyue
发布于
2023年7月20日
许可协议