1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

fix multi seq message

This commit is contained in:
wdvxdr 2020-10-08 19:31:47 +08:00
parent 2d66d32a49
commit 8a6ff5df04
2 changed files with 3 additions and 8 deletions

View File

@ -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()))
}

View File

@ -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:] {