From 37b3821668be812d1585951338a8daa59b9c6485 Mon Sep 17 00:00:00 2001 From: Mrs4s Date: Fri, 20 Nov 2020 09:01:32 +0800 Subject: [PATCH] feature friend ptt decode. --- client/decoders.go | 2 +- client/global.go | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/client/decoders.go b/client/decoders.go index 70e1a747..3ca7cb3f 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -328,7 +328,7 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{}, continue } c.dispatchTempMessage(c.parseTempMessage(message)) - case 166: // 好友消息 + case 166, 208: // 好友消息 if message.Head.GetFromUin() == c.Uin { for { frdSeq := atomic.LoadInt32(&c.friendSeq) diff --git a/client/global.go b/client/global.go index d8f4a81f..85104ffc 100644 --- a/client/global.go +++ b/client/global.go @@ -367,11 +367,23 @@ func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage } } ret := &message.PrivateMessage{ - Id: msg.Head.GetMsgSeq(), - Target: c.Uin, - Time: msg.Head.GetMsgTime(), - Sender: sender, - Elements: message.ParseMessageElems(msg.Body.RichText.Elems), + Id: msg.Head.GetMsgSeq(), + Target: c.Uin, + Time: msg.Head.GetMsgTime(), + Sender: sender, + Elements: func() []message.IMessageElement { + if msg.Body.RichText.Ptt != nil { + return []message.IMessageElement{ + &message.VoiceElement{ + Name: msg.Body.RichText.Ptt.GetFileName(), + Md5: msg.Body.RichText.Ptt.FileMd5, + Size: msg.Body.RichText.Ptt.GetFileSize(), + Url: string(msg.Body.RichText.Ptt.DownPara), + }, + } + } + return message.ParseMessageElems(msg.Body.RichText.Elems) + }(), } if msg.Body.RichText.Attr != nil { ret.InternalId = msg.Body.RichText.Attr.GetRandom()