NoneBot2是一个跨平台的Python异步机器人框架,迪拉熊Bot基于该框架开发。NoneBot2提供了完善的插件系统、事件处理机制和协议适配器支持,使得Bot开发更加模块化和可维护。
NoneBot2采用插件化架构,每个功能模块可以作为独立插件存在。迪拉熊Bot的功能(如查分、排卡、开字母等)均以插件形式组织,便于扩展和维护。
迪拉熊Bot在同一个进程里同时加载两个适配器,而不是二选一:
- OneBot V11适配器:连接Lagrange、go-cqhttp等OneBot V11协议客户端,对应普通侧
- QQ适配器:直接对接QQ官方机器人平台API,对应官B侧
事件处理与指令系统
Section titled “事件处理与指令系统”NoneBot2基于事件驱动模型,通过事件处理器(Matcher)响应不同类型的消息事件。迪拉熊Bot自研了一套声明式的Command(基于nonebot-plugin-alconna的UniMessage),用同一份别名/参数定义同时服务两个适配器:消息开头的@段会被统一跳过,命令前缀(command_start,本项目配置为迪拉熊、dlx、/)在被@时自动变为可选。QQ官方机器人平台开启了GROUP_MESSAGE_CREATE全量群消息事件(intent GROUP_AND_C2C_EVENT)后不再局限于只推送@了Bot的消息,官B侧因此和普通侧一样可以裸文本直接触发指令;复读、开字母直接猜歌这类依赖被动监听群聊的功能,官B侧同样可以正常使用。
迪拉熊Bot的项目结构遵循NoneBot2的约定:
bot.py:入口文件,负责初始化和启动Botkuma.conf:配置文件,包含数据库连接、适配器设置、查分器Token等配置- 插件目录:各功能模块以插件形式组织
项目使用kuma.conf作为配置文件(HOCON格式)。启动时,bot.py会自动将配置转写为临时.env文件供NoneBot框架读取。
关键配置项包括:
- 数据库连接:
functions.database_url - 对象存储:
storage节点下的S3/MinIO连接信息(图库图片依赖公网可访问的URL) - OneBot设置:
nonebot.listen_port、onebot.token - QQ官方机器人设置:
qq.id、qq.token、qq.secret——与上面的OneBot设置同时存在于同一份配置里,不是二选一 - 查分器Token:
prober.diving_fish_token和prober.lxns_token - 语音合成API:
tts节点下配置TTS服务的base_url、api_key和model