Repository navigation
Undefined v3.14.0
v3.14.0 OneBot 本地文件三模式传输
本版本为 Bot 本地文件新增统一传输层,支持 local、url、stream 三种发送方式并按投递快照热更新;默认保持 local 兼容旧部署,跨文件系统发送可显式启用 Runtime 临时链接或 NapCat Stream 分块上传。
变更内容
- 新增
[onebot].file_send_mode(local/url/stream)与[onebot].file_send_host,环境变量为ONEBOT_FILE_SEND_MODE/ONEBOT_FILE_SEND_HOST,WebUI 配置表单提供三种模式的下拉选择。两项均支持热更新,每次逻辑投递开始时取得独立快照,排队中与进行中的投递保持旧值。默认local,旧配置及未显式指定模式的环境保持原有发送行为,url和stream必须显式启用;file_send_host仅用于 URL 模式,接受 IPv4、IPv6 或域名。 - QQ 本地图片、语音、视频、文件与嵌套合并转发中的媒体统一经过新传输层,覆盖 CQ 字符串与消息段数组,文件消息段缺少
name时自动补全文件名;已有 HTTP/HTTPS URL、Base64 和协议端资源标识原样通过,展示文件名、附件 UID 与历史来源保持不变。 url模式复用 Runtime HTTP 监听,将本地文件复制为独立临时副本,新增GET/HEAD/api/v1/onebot/files/{file_id}?token=...路由:每个文件独立随机令牌、有效期 16 分钟、支持 Range 与重复读取;令牌只授权该文件,不能替代X-Undefined-API-Key调用其他 Runtime 接口;访问日志不记录查询串,正常停止清理本实例缓存,启动只回收本模块命名且已过期的遗留副本。删除源文件或切换发送模式不会提前使有效链接失效。stream模式通过既有 OneBot WebSocket 按 64 KiB 分块上传并逐块等待确认,完成后独立请求并校验协议端路径、大小与 SHA-256;同一 Bot 的 Stream 文件投递串行,纯文本不等待上传锁;失败只重置未完成的 Stream,不调用清空临时目录的接口;不支持零字节文件。协议端不支持扩展时明确报错并提示改用local或url,不会静默回退。- 文件准备、实际发送与明确失败后的文件消息段回退共用 8 分钟预算,排队不计时;文件准备失败不计作已发送、不触发回退,也不会自动切换模式或重试上传。投递已发出但等待超时、被取消或连接中断时按结果未确认处理,禁止自动重发;
send_forward_msg/send_private_forward_msg纳入防重投递动作。 - 文件上传失败的回退收敛到统一调用入口:仅协议端明确拒绝时才改用文件消息段,且回退请求同样经过传输层准备;
FileTransferError不再被私聊与群临时会话回退、附件派发和 Bilibili 发送链路吞掉,消息类工具把包含模式与阶段的可展示说明直接反馈给模型。 - 加固日志与连接脱敏。WebSocket 客户端不再输出未经脱敏的 DEBUG 握手与原始帧,连接错误与 API 失败信息经脱敏后记录,新增
chunk_data脱敏规则并修复脱敏替换未正确回填捕获组的问题;无法解析的消息只记录长度,接收循环停止时统一让挂起的请求失败退出,不再悬挂。
📝 Detailed Changes
🚀 Features
🐛 Bug Fixes
- fix(ci): upgrade android-actions/setup-android to v4 (533e533)