对应 WeQ 解析实现:packages/codec/src/proto/msg/element.ts(elementType = 7)。
引用一条更早的消息。回复元素自带被引用消息的快照(47423),
所以即使原消息已被删除,引用块依然能渲染出内容。
与 40900 列 的关系:行级
40011 = 9时,40900列里也存了一份 被引用消息的完整行快照。47423是元素内的轻量副本,40900是列级的完整副本, 两者并存、粒度不同。
| tag | 字段名 | 类型 | 必有 | 含义 |
|---|---|---|---|---|
| 40020 | origSenderUid |
string | ✅ | 原消息发送者 uid(复用信封级 tag) |
| 40021 | origReceiverUid |
string | ✅ | 原消息接收者 uid(复用信封级 tag) |
| 47402 | origMsgSeq |
uint32 | ✅ | 原消息的「发送方本地序号」(= 原消息行的 40005,即引用方自己库里看到的那个值)。群聊里它与群内 seq 同值;私聊里不是 40003 —— 见下 |
| 47403 | origSenderUin |
uint32 | ✅ | 原消息发送者 QQ 号 |
| 47404 | origMsgTime |
uint32 | ✅ | 原消息时间戳,unix 秒 |
| 47411 | origReceiverUin |
uint32 | ✅ | 原消息接收者 QQ 号 |
| 47416 | origMsgId |
uint64 | 引用方对原消息的另一份 id(实测 = 原消息行的 40006,形如 1<<56 | 40002)。不是 40001 那个雪花 id,别拿它去查行 |
|
| 47419 | origMsgIndex |
uint32 | 原消息在会话内的序号(c2c 里出现过 = 原消息的 40003,群聊 / 部分样本缺席) |
|
| 47401 | replyOrigMsgIdRef |
uint64 | 原消息 id 引用 | |
| 48101 | replyOrigMsgSeqCopy |
uint32 | 47402 的副本 —— 所有观测行完全相同 |
群聊里
origReceiverUid/origMsgIndex常常缺失。WeQ 自己构造回复时会填无害的占位值。
47402与两套 seq(2026-10-17 真机对账):私聊里的「序号」有两个空间 —— 会话级msgSeq(行里的40003,wirecontentHead.ntMsgSeq,历史分页 / 回执用它) 与发送方本地 client sequence(行里的40005,wirecontentHead.sequencetag 5)。 私聊引用元素带的是后者:拿一条真实的私聊引用去比,47402= 被引用行的40005(同一条引用的47416= 被引用行的40006),而40003是另一个数。 我们自己发私聊引用时填错的正是这一格(填了40003),收端于是定位不到原消息; 群聊里两个空间同值,所以群聊从来不出问题。谁往47402里写什么,见 发消息 的「引用指针」。
| tag | 字段名 | 类型 | 必有 | 含义 |
|---|---|---|---|---|
| 47423 | origElements |
repeated ReplyElementWire |
✅ | 原消息 element 的轻量快照 |
| 47413 | replyTextSummary |
string | 原消息的文本摘要 | |
| 47421 | replyOrigSenderNick |
string | 被回复者的群名片 / 昵称 | |
| 47410 | replyOrigSenderBlob |
bytes | 被引用消息发送者的完整快照(uin、uid、群名片、seq/time…)。嵌套很深,且携带的信息 47402..47423 已全部提供,故保留为原始字节 |
结构是 ElementWire 的裁剪版:elementId + elementType 打头,
后面跟着「实际出现在 wire 上的」各类型字段。由于捕获时并不知道原消息是什么类型,
除前两项外全部可选:
- 通用:
450014500245003 - 文本:
45101 - 文件族:
4540245403454054540645407454084541145412454164541845424455034550545511455134551745518455504580245803458044581545816 - 语音:
45906459114591545925 - 表情:
4760147602 - ARK:
47901 - 合并转发:
486014860248603
| tag | 字段名 | 类型 | 观测情况 |
|---|---|---|---|
| 47422 | replyFlag47422 |
uint64 | 必有。大小接近 elementId |
| 47405 | replyFlag47405 |
uint32 | 取值 1(×290)/ 0(×14) |
| 47407 | replyFlag47407 |
uint32 | 取值 1(×207)/ 0(×96) |
| 47415 | replyFlag47415 |
bool | 未知 |
| 47418 | replyFlag47418 |
bool | 未知 |
| 47424 | replyFlag47424 |
uint32 | 恒为 1 |
| 47425 | replyFlag47425 |
uint32 | 恒为 1 |