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

fix: private message seq

This commit is contained in:
wdvxdr 2021-05-18 15:00:25 +08:00
parent 102a5ab01a
commit f145000ac0
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6
2 changed files with 17 additions and 13 deletions

View File

@ -15,7 +15,7 @@ import (
func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *message.PrivateMessage { func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *message.PrivateMessage {
mr := int32(rand.Uint32()) mr := int32(rand.Uint32())
seq := c.nextFriendSeq() var seq int32
t := time.Now().Unix() t := time.Now().Unix()
imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image }) imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image })
msgLen := message.EstimateLength(m.Elements, 703) msgLen := message.EstimateLength(m.Elements, 703)
@ -26,10 +26,15 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *
div := int32(rand.Uint32()) div := int32(rand.Uint32())
fragmented := m.ToFragmented() fragmented := m.ToFragmented()
for i, elems := range fragmented { 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) _ = c.send(pkt)
} }
} else { } else {
seq = c.nextFriendSeq()
_, pkt := c.buildFriendSendingPacket(target, seq, mr, 1, 0, 0, t, m.Elements) _, pkt := c.buildFriendSendingPacket(target, seq, mr, 1, 0, 0, t, m.Elements)
_ = c.send(pkt) _ = c.send(pkt)
} }

View File

@ -8,11 +8,12 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/golang/protobuf/proto"
jsoniter "github.com/json-iterator/go"
"github.com/Mrs4s/MiraiGo/binary" "github.com/Mrs4s/MiraiGo/binary"
"github.com/Mrs4s/MiraiGo/client/pb/msg" "github.com/Mrs4s/MiraiGo/client/pb/msg"
"github.com/Mrs4s/MiraiGo/utils" "github.com/Mrs4s/MiraiGo/utils"
"github.com/golang/protobuf/proto"
jsoniter "github.com/json-iterator/go"
) )
var json = jsoniter.ConfigFastest var json = jsoniter.ConfigFastest
@ -364,16 +365,14 @@ func ToSrcProtoElems(elems []IMessageElement) (r []*msg.Elem) {
func ParseMessageElems(elems []*msg.Elem) []IMessageElement { func ParseMessageElems(elems []*msg.Elem) []IMessageElement {
var res []IMessageElement var res []IMessageElement
for _, elem := range elems { for _, elem := range elems {
if elem.SrcMsg != nil { if elem.SrcMsg != nil && len(elem.SrcMsg.OrigSeqs) != 0 {
if len(elem.SrcMsg.OrigSeqs) != 0 { r := &ReplyElement{
r := &ReplyElement{ ReplySeq: elem.SrcMsg.OrigSeqs[0],
ReplySeq: elem.SrcMsg.OrigSeqs[0], Time: elem.SrcMsg.GetTime(),
Time: elem.SrcMsg.GetTime(), Sender: elem.SrcMsg.GetSenderUin(),
Sender: elem.SrcMsg.GetSenderUin(), Elements: ParseMessageElems(elem.SrcMsg.Elems),
Elements: ParseMessageElems(elem.SrcMsg.Elems),
}
res = append(res, r)
} }
res = append(res, r)
} }
if elem.TransElemInfo != nil { if elem.TransElemInfo != nil {
if elem.TransElemInfo.GetElemType() == 24 { // QFile if elem.TransElemInfo.GetElemType() == 24 { // QFile