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

Revert "supported group msg multi seq."

This reverts commit 9ac5ce95
This commit is contained in:
Mrs4s 2020-10-02 17:29:40 +08:00
parent 9ac5ce958c
commit afe4132a38
5 changed files with 22 additions and 39 deletions

View File

@ -379,7 +379,7 @@ func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage,
Message: m.Elements,
},
}})
if ret != nil && ret.Sources[0] == -1 {
if ret != nil && ret.Id == -1 {
c.Error("long message send error. trying fragmented sending...")
return c.SendGroupMessage(groupCode, m, true)
}
@ -417,7 +417,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
}
var mid int32
ret := &message.GroupMessage{
Sources: []int32{-1},
Id: -1,
InternalId: mr,
GroupCode: groupCode,
Sender: &message.Sender{
@ -433,7 +433,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
case <-time.After(time.Second * 5):
return ret
}
ret.Sources = []int32{mid}
ret.Id = mid
return ret
}

View File

@ -316,25 +316,25 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
return nil, nil
}
if pkt.Message.Content != nil && pkt.Message.Content.PkgNum > 1 {
var builder *groupMessageBuilder
var builder *groupMessageBuilder // TODO: 支持多SEQ
i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq)
if !ok {
builder = &groupMessageBuilder{
SliceSeq: pkt.Message.Content.DivSeq,
SliceCount: pkt.Message.Content.PkgNum,
MessageSeq: pkt.Message.Content.DivSeq,
MessageCount: pkt.Message.Content.PkgNum,
}
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.SliceCount {
if int32(len(builder.MessageSlices)) >= builder.MessageCount {
c.groupMsgBuilders.Delete(pkt.Message.Content.DivSeq)
c.dispatchGroupMessage(c.parseGroupMessage(builder.build(), builder.seqs()))
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
}
return nil, nil
}
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message, nil))
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
return nil, nil
}

View File

@ -63,9 +63,8 @@ type DeviceInfoFile struct {
}
type groupMessageBuilder struct {
SliceSeq int32
SliceCount int32
MessageSeq int32
MessageCount int32
MessageSlices []*msg.Message
}
@ -244,11 +243,11 @@ func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage
return ret
}
func (c *QQClient) parseTempMessage(m *msg.Message) *message.TempMessage {
group := c.FindGroupByUin(m.Head.C2CTmpMsgHead.GroupUin)
mem := group.FindMember(m.Head.FromUin)
func (c *QQClient) parseTempMessage(msg *msg.Message) *message.TempMessage {
group := c.FindGroupByUin(msg.Head.C2CTmpMsgHead.GroupUin)
mem := group.FindMember(msg.Head.FromUin)
sender := &message.Sender{
Uin: m.Head.FromUin,
Uin: msg.Head.FromUin,
Nickname: "Unknown",
IsFriend: false,
}
@ -257,15 +256,15 @@ func (c *QQClient) parseTempMessage(m *msg.Message) *message.TempMessage {
sender.CardName = mem.CardName
}
return &message.TempMessage{
Id: m.Head.MsgSeq,
Id: msg.Head.MsgSeq,
GroupCode: group.Code,
GroupName: group.Name,
Sender: sender,
Elements: message.ParseMessageElems(m.Body.RichText.Elems),
Elements: message.ParseMessageElems(msg.Body.RichText.Elems),
}
}
func (c *QQClient) parseGroupMessage(m *msg.Message, seqs []int32) *message.GroupMessage {
func (c *QQClient) parseGroupMessage(m *msg.Message) *message.GroupMessage {
group := c.FindGroup(m.Head.GroupInfo.GroupCode)
if group == nil {
c.Debug("sync group %v.", m.Head.GroupInfo.GroupCode)
@ -320,14 +319,8 @@ func (c *QQClient) parseGroupMessage(m *msg.Message, seqs []int32) *message.Grou
}
}
var g *message.GroupMessage
seq := func() []int32 {
if len(seqs) == 0 {
return []int32{m.Head.MsgSeq}
}
return seqs
}()
g = &message.GroupMessage{
Sources: seq,
Id: m.Head.MsgSeq,
GroupCode: group.Code,
GroupName: string(m.Head.GroupInfo.GroupName),
Sender: sender,
@ -340,7 +333,7 @@ func (c *QQClient) parseGroupMessage(m *msg.Message, seqs []int32) *message.Grou
if elem.GeneralFlags != nil && elem.GeneralFlags.LongTextResid != "" {
if f := c.GetForwardMessage(elem.GeneralFlags.LongTextResid); f != nil && len(f.Nodes) == 1 {
g = &message.GroupMessage{
Sources: seq,
Id: m.Head.MsgSeq,
GroupCode: group.Code,
GroupName: string(m.Head.GroupInfo.GroupName),
Sender: sender,
@ -377,16 +370,6 @@ func (b *groupMessageBuilder) build() *msg.Message {
return base
}
func (b *groupMessageBuilder) seqs() (r []int32) {
sort.Slice(b.MessageSlices, func(i, j int) bool {
return b.MessageSlices[i].Content.PkgIndex < b.MessageSlices[i].Content.PkgIndex
})
for _, m := range b.MessageSlices {
r = append(r, m.Head.MsgSeq)
}
return
}
func packRequestDataV3(data []byte) (r []byte) {
r = append([]byte{0x0A}, data...)
r = append(r, 0x0B)

View File

@ -168,7 +168,7 @@ func AtAll() *AtElement {
func NewReply(m *GroupMessage) *ReplyElement {
return &ReplyElement{
ReplySeq: m.Sources[0],
ReplySeq: m.Id,
Sender: m.Sender.Uin,
Time: m.Time,
//original: m.OriginalElements,

View File

@ -33,7 +33,7 @@ type (
}
GroupMessage struct {
Sources []int32
Id int32
InternalId int32
GroupCode int64
GroupName string