From 5bad0dce044f49ca907e3628d8322f48f1b62f29 Mon Sep 17 00:00:00 2001 From: icarus-ai <82353054+icarus-ai@users.noreply.github.com> Date: Thu, 24 Apr 2025 15:19:49 +0800 Subject: [PATCH] =?UTF-8?q?element=E5=8C=85=E5=90=AB=E6=9B=B4=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message/message.go | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/message/message.go b/message/message.go index 0ee1dff..138fc80 100644 --- a/message/message.go +++ b/message/message.go @@ -102,13 +102,12 @@ func ParsePrivateMessage(msg *message.PushMsgBody) *PrivateMessage { UID: msg.ResponseHead.FromUid.Unwrap(), IsFriend: true, }, - Time: msg.ContentHead.TimeStamp.Unwrap(), - Elements: ParseMessageElements(msg.Body.RichText.Elems), + Time: msg.ContentHead.TimeStamp.Unwrap(), } if msg.Body != nil { + prvMsg.Elements = ParseMessageElements(msg.Body.RichText.Elems) prvMsg.Elements = append(prvMsg.Elements, ParseMessageBody(msg.Body, false)...) } - return prvMsg } @@ -125,11 +124,12 @@ func ParseGroupMessage(msg *message.PushMsgBody) *GroupMessage { CardName: msg.ResponseHead.Grp.MemberName, IsFriend: false, }, - Time: msg.ContentHead.TimeStamp.Unwrap(), - Elements: ParseMessageElements(msg.Body.RichText.Elems), + Time: msg.ContentHead.TimeStamp.Unwrap(), + OriginalObject: msg, } if msg.Body != nil { + grpMsg.Elements = ParseMessageElements(msg.Body.RichText.Elems) grpMsg.Elements = append(grpMsg.Elements, ParseMessageBody(msg.Body, true)...) } return grpMsg @@ -288,7 +288,7 @@ func ParseMessageElements(msg []*message.Elem) []IMessageElement { case 48: extra := &oidb2.MsgInfo{} err := proto.Unmarshal(elem.CommonElem.PbElem, extra) - if err != nil { + if err != nil || len(extra.MsgInfoBody) == 0 { // 不合理的合并转发会导致越界 continue } index := extra.MsgInfoBody[0].Index @@ -314,6 +314,7 @@ func ParseMessageElements(msg []*message.Elem) []IMessageElement { Sha1: utils.MustParseHexStr(index.Info.FileSha1), Duration: index.Info.Time, Node: index, + MsgInfo: extra, }) case 11, 21: // video var thumb = new(VideoThumb) @@ -326,13 +327,14 @@ func ParseMessageElements(msg []*message.Elem) []IMessageElement { thumb.Sha1 = utils.MustParseHexStr(info.Info.FileSha1) } res = append(res, &ShortVideoElement{ - Name: index.Info.FileName, - UUID: index.FileUuid, - Md5: utils.MustParseHexStr(index.Info.FileHash), - Sha1: utils.MustParseHexStr(index.Info.FileSha1), - Size: index.Info.FileSize, - Thumb: thumb, - Node: index, + Name: index.Info.FileName, + UUID: index.FileUuid, + Md5: utils.MustParseHexStr(index.Info.FileHash), + Sha1: utils.MustParseHexStr(index.Info.FileSha1), + Size: index.Info.FileSize, + Thumb: thumb, + Node: index, + MsgInfo: extra, }) } case 3: // 闪照