跳转到内容

Nonebot 2

NoneBot2框架简介与开发指南

NoneBot2是一个跨平台的Python异步机器人框架,迪拉熊Bot基于该框架开发。NoneBot2提供了完善的插件系统、事件处理机制和协议适配器支持,使得Bot开发更加模块化和可维护。

NoneBot2采用插件化架构,每个功能模块可以作为独立插件存在。迪拉熊Bot的功能(如查分、排卡、开字母等)均以插件形式组织,便于扩展和维护。

迪拉熊Bot在同一个进程里同时加载两个适配器,而不是二选一:

  • OneBot V11适配器:连接Lagrange、go-cqhttp等OneBot V11协议客户端,对应普通侧
  • QQ适配器:直接对接QQ官方机器人平台API,对应官B侧

NoneBot2基于事件驱动模型,通过事件处理器(Matcher)响应不同类型的消息事件。迪拉熊Bot自研了一套声明式的Command(基于nonebot-plugin-alconnaUniMessage),用同一份别名/参数定义同时服务两个适配器:消息开头的@段会被统一跳过,命令前缀(command_start,本项目配置为迪拉熊dlx/)在被@时自动变为可选。QQ官方机器人平台开启了GROUP_MESSAGE_CREATE全量群消息事件(intent GROUP_AND_C2C_EVENT)后不再局限于只推送@了Bot的消息,官B侧因此和普通侧一样可以裸文本直接触发指令;复读、开字母直接猜歌这类依赖被动监听群聊的功能,官B侧同样可以正常使用。

迪拉熊Bot的项目结构遵循NoneBot2的约定:

  • bot.py:入口文件,负责初始化和启动Bot
  • kuma.conf:配置文件,包含数据库连接、适配器设置、查分器Token等配置
  • 插件目录:各功能模块以插件形式组织

项目使用kuma.conf作为配置文件(HOCON格式)。启动时,bot.py会自动将配置转写为临时.env文件供NoneBot框架读取。

关键配置项包括:

  • 数据库连接functions.database_url
  • 对象存储storage节点下的S3/MinIO连接信息(图库图片依赖公网可访问的URL)
  • OneBot设置nonebot.listen_portonebot.token
  • QQ官方机器人设置qq.idqq.tokenqq.secret——与上面的OneBot设置同时存在于同一份配置里,不是二选一
  • 查分器Tokenprober.diving_fish_tokenprober.lxns_token
  • 语音合成APItts节点下配置TTS服务的base_urlapi_keymodel