fc21d87a9bf95c6bd2eb2e043574f592cedc3fcc
Live testing showed the voice-to-text text is delivered by an async push
(Event 0x210 subType 61), not the request response — so the previous
poll-by-resend never got it. Captured a real push and decoded its protobuf:
outer { f1, f2:item }; the item echoes the request msgId at field 1 (the
correlation key) and the recognised text at field 8.
- proto-defs: PttTransPush / PttTransPushItem (live-verified).
- protocol: Event0x210SubType.PttTransResult = 61 + decoder → internal
`ptt_trans_result` event { msgId, text } (replaces the temp hex dump).
- core: translatePttToText now sends ONE trigger and returns the inline text
only if present (already-transcribed); empty = pending.
- onebot: ptt-trans-waiter (keyed by selfUin:msgId), event-pipeline subscribes
`ptt_trans_result` to resolve it; fetch_ptt_text registers the waiter,
fires the trigger, and awaits the push (20s timeout).
Decoded one real push as text "12311123。" end to end.
Next Remote Protocol Framework.
Releases · Issues · QQ 群 · Telegram
SnowLuma 是一个基于 TypeScript 的协议转换框架,旨在为 QQ 客户端提供 OneBot v11 标准接口,支持 WebSocket/HTTP 适配、多账号并行及 WebUI 管理。
特性
- OneBot v11 兼容:支持文本、音视频、Markdown、JSON 等消息格式。
- 高性能架构:TypeScript 全栈,基于 pnpm monorepo 管理,核心逻辑分离。
- 现代化管理:内置 WebUI 面板,支持实时日志、密码热更、多账号管理。
- 多适配器支持:WebSocket (Server/Client)、HTTP (Server/Post)。
- 数据持久化:使用 SQLite 存储好友、群组等关系数据。
快速开始
- 从 Releases 下载最新发布包并解压。
- 运行
./launcher.bat(Windows) 或./launcher.sh(Linux)。 - 访问
http://localhost:5099(初始账号admin,密码见控制台输出)。
鸣谢
参考了 LagrangeV2 的协议定义与 NapCatQQ 的实现思路。
Languages
TypeScript
98.9%
CSS
0.5%
JavaScript
0.5%