From d7e61afdfe0723623bb11f2dfe03f714dae9e965 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 28 Aug 2020 00:22:17 +0800 Subject: [PATCH] supported on-way friend msg. --- client/decoders.go | 14 -------------- client/global.go | 23 +++++++++++++++-------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/client/decoders.go b/client/decoders.go index 5f43a8bf..9167bc0e 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -234,20 +234,6 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{}, if message.Body.RichText == nil || message.Body.RichText.Elems == nil { continue } - //friend := c.FindFriend(message.Head.FromUin) - /* - if friend == nil { - return nil, nil - } - if friend.msgSeqList == nil { - friend.msgSeqList = utils.NewCache(time.Second * 5) - } - strSeq := strconv.FormatInt(int64(message.Head.MsgSeq), 10) - if _, ok := friend.msgSeqList.Get(strSeq); ok { - continue - } - friend.msgSeqList.Add(strSeq, 0, time.Minute*15) - */ c.dispatchFriendMessage(c.parsePrivateMessage(message)) case 187: _, pkt := c.buildSystemMsgNewFriendPacket() diff --git a/client/global.go b/client/global.go index 51e0ba69..8ea2a15d 100644 --- a/client/global.go +++ b/client/global.go @@ -195,17 +195,24 @@ func (info *DeviceInfo) GenDeviceInfoData() []byte { func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage { friend := c.FindFriend(msg.Head.FromUin) + var sender *message.Sender if friend == nil { - return nil - } - ret := &message.PrivateMessage{ - Id: msg.Head.MsgSeq, - Target: c.Uin, - Time: msg.Head.MsgTime, - Sender: &message.Sender{ + sender = &message.Sender{ + Uin: msg.Head.FromUin, + Nickname: msg.Head.FromNick, + IsFriend: false, + } + } else { + sender = &message.Sender{ Uin: friend.Uin, Nickname: friend.Nickname, - }, + } + } + ret := &message.PrivateMessage{ + Id: msg.Head.MsgSeq, + Target: c.Uin, + Time: msg.Head.MsgTime, + Sender: sender, Elements: message.ParseMessageElems(msg.Body.RichText.Elems), } if msg.Body.RichText.Attr != nil {