mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-05 03:23:50 +08:00
commit
f2d0c6a546
@ -363,16 +363,13 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
|||||||
var builder *groupMessageBuilder // TODO: 支持多SEQ
|
var builder *groupMessageBuilder // TODO: 支持多SEQ
|
||||||
i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq)
|
i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq)
|
||||||
if !ok {
|
if !ok {
|
||||||
builder = &groupMessageBuilder{
|
builder = &groupMessageBuilder{}
|
||||||
MessageSeq: pkt.Message.Content.DivSeq,
|
|
||||||
MessageCount: pkt.Message.Content.PkgNum,
|
|
||||||
}
|
|
||||||
c.groupMsgBuilders.Store(pkt.Message.Content.DivSeq, builder)
|
c.groupMsgBuilders.Store(pkt.Message.Content.DivSeq, builder)
|
||||||
} else {
|
} else {
|
||||||
builder = i.(*groupMessageBuilder)
|
builder = i.(*groupMessageBuilder)
|
||||||
}
|
}
|
||||||
builder.MessageSlices = append(builder.MessageSlices, pkt.Message)
|
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.groupMsgBuilders.Delete(pkt.Message.Content.DivSeq)
|
||||||
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
||||||
}
|
}
|
||||||
|
@ -63,8 +63,6 @@ type DeviceInfoFile struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type groupMessageBuilder struct {
|
type groupMessageBuilder struct {
|
||||||
MessageSeq int32
|
|
||||||
MessageCount int32
|
|
||||||
MessageSlices []*msg.Message
|
MessageSlices []*msg.Message
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -434,7 +432,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
|
|||||||
|
|
||||||
func (b *groupMessageBuilder) build() *msg.Message {
|
func (b *groupMessageBuilder) build() *msg.Message {
|
||||||
sort.Slice(b.MessageSlices, func(i, j int) bool {
|
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]
|
base := b.MessageSlices[0]
|
||||||
for _, m := range b.MessageSlices[1:] {
|
for _, m := range b.MessageSlices[1:] {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user