diff --git a/client/private_msg.go b/client/private_msg.go index 6026a752..075636b1 100644 --- a/client/private_msg.go +++ b/client/private_msg.go @@ -15,7 +15,7 @@ import ( func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *message.PrivateMessage { mr := int32(rand.Uint32()) - seq := c.nextFriendSeq() + var seq int32 t := time.Now().Unix() imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image }) msgLen := message.EstimateLength(m.Elements, 703) @@ -26,10 +26,15 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) * div := int32(rand.Uint32()) fragmented := m.ToFragmented() for i, elems := range fragmented { - _, pkt := c.buildFriendSendingPacket(target, c.nextFriendSeq(), mr, int32(len(fragmented)), int32(i), div, t, elems) + fseq := c.nextFriendSeq() + if i == 0 { + seq = fseq + } + _, pkt := c.buildFriendSendingPacket(target, fseq, mr, int32(len(fragmented)), int32(i), div, t, elems) _ = c.send(pkt) } } else { + seq = c.nextFriendSeq() _, pkt := c.buildFriendSendingPacket(target, seq, mr, 1, 0, 0, t, m.Elements) _ = c.send(pkt) } diff --git a/message/message.go b/message/message.go index d2cacb81..097a8f26 100644 --- a/message/message.go +++ b/message/message.go @@ -8,11 +8,12 @@ import ( "strconv" "strings" + "github.com/golang/protobuf/proto" + jsoniter "github.com/json-iterator/go" + "github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/client/pb/msg" "github.com/Mrs4s/MiraiGo/utils" - "github.com/golang/protobuf/proto" - jsoniter "github.com/json-iterator/go" ) var json = jsoniter.ConfigFastest @@ -364,16 +365,14 @@ func ToSrcProtoElems(elems []IMessageElement) (r []*msg.Elem) { func ParseMessageElems(elems []*msg.Elem) []IMessageElement { var res []IMessageElement for _, elem := range elems { - if elem.SrcMsg != nil { - if len(elem.SrcMsg.OrigSeqs) != 0 { - r := &ReplyElement{ - ReplySeq: elem.SrcMsg.OrigSeqs[0], - Time: elem.SrcMsg.GetTime(), - Sender: elem.SrcMsg.GetSenderUin(), - Elements: ParseMessageElems(elem.SrcMsg.Elems), - } - res = append(res, r) + if elem.SrcMsg != nil && len(elem.SrcMsg.OrigSeqs) != 0 { + r := &ReplyElement{ + ReplySeq: elem.SrcMsg.OrigSeqs[0], + Time: elem.SrcMsg.GetTime(), + Sender: elem.SrcMsg.GetSenderUin(), + Elements: ParseMessageElems(elem.SrcMsg.Elems), } + res = append(res, r) } if elem.TransElemInfo != nil { if elem.TransElemInfo.GetElemType() == 24 { // QFile