跳转到内容

消息存储

Lingchu Bot 消息存储管道

Lingchu Bot 包含一个可选的消息存储服务,用于记录事件数据、处理结果、Bot 生命周期事件和平台 API 调用摘要。本页说明存储了什么、如何配置,以及如何访问存储的数据。

消息存储分为三层:

分层 文件 职责
平台适配 hooks/adapters.py Bot/Event 解析为稳定的平台上下文,并把事件归一化为与适配器无关的元数据。
钩子注册 hooks/handlers/message_store.py 注册 NoneBot 的 event_preprocessorevent_postprocessorrun_preprocessorrun_postprocessor 钩子。
业务逻辑 services/message_store.py 通过仓库层写入事件接收、处理结果、生命周期和 API 调用摘要记录。

服务记录结构化摘要而非原始消息内容。事件会经过仓储层模型选择,高频的平台 / 适配器 / 框架组合可以使用专用 ORM 表。

记录类型 描述
事件接收 Bot 接收到任意适配器事件时
处理结果 事件处理的结局
Bot 生命周期 启动、关闭和连接事件
API 调用摘要 事件处理期间发起的平台 API 调用

每条记录包含平台、适配器、框架、事件类别和适配器事件类型字段。QQ + OneBot V11 + NoneBot 事件会写入专用分区表;不支持的组合回退到旧的全局表。

字段 类型 默认值 说明
message_store_enabled boolean true 是否启用消息存储运行时钩子
message_store_retention_days number 30 消息记录保留天数;0 禁用基于天数的过期
message_store_summary_limit number 500 文本、数据和结果摘要的最大长度
message_store_record_api_calls boolean true 是否记录平台 API 调用摘要
message_store_cleanup_enabled boolean true 是否在关闭时清理过期的消息记录

记录根据 message_store_retention_days 保留:

  • 设置为正数时,超过指定天数的记录会被清理。
  • 设置为 0 时,禁用基于天数的过期;记录将无限期保留。
  • message_store_cleanup_enabledtrue 时,清理在 Bot 关闭期间运行。

存储记录中的 platform 字段从适配器注册表派生:

场景 平台值
OneBot V11 适配器已启用 qq
未知适配器 unknown

只有 LINGCHUAdapter 选中的适配器决定平台值。其他已注册的适配器被忽略。

消息存储使用 nonebot-plugin-orm 进行数据库访问。database/orm_crud.py 中的 ORM 辅助提供异步 CRUD 操作,在 worker thread 中运行以避免阻塞 NoneBot 事件循环。

要完全禁用消息存储:

message_store_enabled = false

禁用后,不会注册任何事件钩子,也不会写入任何记录。现有记录不会被自动删除。