From 8a6ff5df047e71a23f9fab14aaf79911700342ea Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Thu, 8 Oct 2020 19:31:47 +0800 Subject: [PATCH] fix multi seq message --- client/decoders.go | 7 ++----- client/global.go | 4 +--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/client/decoders.go b/client/decoders.go index c01e585a..f6e52edc 100644 --- a/client/decoders.go +++ b/client/decoders.go @@ -319,16 +319,13 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{ var builder *groupMessageBuilder // TODO: 支持多SEQ i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq) if !ok { - builder = &groupMessageBuilder{ - MessageSeq: pkt.Message.Content.DivSeq, - MessageCount: pkt.Message.Content.PkgNum, - } + builder = &groupMessageBuilder{} c.groupMsgBuilders.Store(pkt.Message.Content.DivSeq, builder) } else { builder = i.(*groupMessageBuilder) } builder.MessageSlices = append(builder.MessageSlices, pkt.Message) - if int32(len(builder.MessageSlices)) >= builder.MessageCount { + if int32(len(builder.MessageSlices)) >= pkt.Message.Content.PkgNum { c.groupMsgBuilders.Delete(pkt.Message.Content.DivSeq) c.dispatchGroupMessage(c.parseGroupMessage(builder.build())) } diff --git a/client/global.go b/client/global.go index c474d90e..80617a50 100644 --- a/client/global.go +++ b/client/global.go @@ -63,8 +63,6 @@ type DeviceInfoFile struct { } type groupMessageBuilder struct { - MessageSeq int32 - MessageCount int32 MessageSlices []*msg.Message } @@ -361,7 +359,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage { func (b *groupMessageBuilder) build() *msg.Message { sort.Slice(b.MessageSlices, func(i, j int) bool { - return b.MessageSlices[i].Content.PkgIndex < b.MessageSlices[i].Content.PkgIndex + return b.MessageSlices[i].Content.PkgIndex < b.MessageSlices[j].Content.PkgIndex }) base := b.MessageSlices[0] for _, m := range b.MessageSlices[1:] {