From 3561e5f156cec8194508e81dae34f714b3cbec4f Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Wed, 19 Aug 2020 12:15:45 +0800 Subject: [PATCH] update. --- client/client.go | 3 ++- client/decoders.go | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/client/client.go b/client/client.go index 3a6dddf6..a6344371 100644 --- a/client/client.go +++ b/client/client.go @@ -63,6 +63,7 @@ type QQClient struct { lastMessageSeq int32 //lastMessageSeqTmp sync.Map + msgSvcCache *utils.Cache lastLostMsg string groupMsgBuilders sync.Map onlinePushCache []int16 // reset on reconnect @@ -142,7 +143,7 @@ func NewClientMd5(uin int64, passwordMd5 [16]byte) *QQClient { ksid: []byte("|454001228437590|A8.2.7.27f6ea96"), eventHandlers: &eventHandlers{}, groupListLock: new(sync.Mutex), - //msgSvcCache: utils.NewCache(time.Second * 5), + msgSvcCache: utils.NewCache(time.Second * 5), } rand.Read(cli.RandomKey) return cli diff --git a/client/decoders.go b/client/decoders.go index 0c4ce623..d7e93be6 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/Mrs4s/MiraiGo/client/pb/pttcenter" "log" + "strconv" "sync" "sync/atomic" "time" @@ -167,6 +168,11 @@ func decodeMessageSvcPacket(c *QQClient, _ uint16, payload []byte) (interface{}, if (int64(pairMsg.LastReadTime) & 4294967295) > int64(message.Head.MsgTime) { continue } + strKey := strconv.FormatInt(message.Head.MsgUid, 10) + if _, ok := c.msgSvcCache.Get(strKey); ok { + continue + } + c.msgSvcCache.Add(strKey, "", time.Second*15) switch message.Head.MsgType { case 33: // 加群同步 groupJoinLock.Lock()