mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-05 03:23:50 +08:00
Revert "supported group msg multi seq."
This reverts commit 9ac5ce95
This commit is contained in:
parent
9ac5ce958c
commit
afe4132a38
@ -379,7 +379,7 @@ func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage,
|
|||||||
Message: m.Elements,
|
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...")
|
c.Error("long message send error. trying fragmented sending...")
|
||||||
return c.SendGroupMessage(groupCode, m, true)
|
return c.SendGroupMessage(groupCode, m, true)
|
||||||
}
|
}
|
||||||
@ -417,7 +417,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
|
|||||||
}
|
}
|
||||||
var mid int32
|
var mid int32
|
||||||
ret := &message.GroupMessage{
|
ret := &message.GroupMessage{
|
||||||
Sources: []int32{-1},
|
Id: -1,
|
||||||
InternalId: mr,
|
InternalId: mr,
|
||||||
GroupCode: groupCode,
|
GroupCode: groupCode,
|
||||||
Sender: &message.Sender{
|
Sender: &message.Sender{
|
||||||
@ -433,7 +433,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
|
|||||||
case <-time.After(time.Second * 5):
|
case <-time.After(time.Second * 5):
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
ret.Sources = []int32{mid}
|
ret.Id = mid
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,25 +316,25 @@ func decodeGroupMessagePacket(c *QQClient, _ uint16, payload []byte) (interface{
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
if pkt.Message.Content != nil && pkt.Message.Content.PkgNum > 1 {
|
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)
|
i, ok := c.groupMsgBuilders.Load(pkt.Message.Content.DivSeq)
|
||||||
if !ok {
|
if !ok {
|
||||||
builder = &groupMessageBuilder{
|
builder = &groupMessageBuilder{
|
||||||
SliceSeq: pkt.Message.Content.DivSeq,
|
MessageSeq: pkt.Message.Content.DivSeq,
|
||||||
SliceCount: pkt.Message.Content.PkgNum,
|
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.SliceCount {
|
if int32(len(builder.MessageSlices)) >= builder.MessageCount {
|
||||||
c.groupMsgBuilders.Delete(pkt.Message.Content.DivSeq)
|
c.groupMsgBuilders.Delete(pkt.Message.Content.DivSeq)
|
||||||
c.dispatchGroupMessage(c.parseGroupMessage(builder.build(), builder.seqs()))
|
c.dispatchGroupMessage(c.parseGroupMessage(builder.build()))
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message, nil))
|
c.dispatchGroupMessage(c.parseGroupMessage(pkt.Message))
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,9 +63,8 @@ type DeviceInfoFile struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type groupMessageBuilder struct {
|
type groupMessageBuilder struct {
|
||||||
SliceSeq int32
|
MessageSeq int32
|
||||||
SliceCount int32
|
MessageCount int32
|
||||||
|
|
||||||
MessageSlices []*msg.Message
|
MessageSlices []*msg.Message
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,11 +243,11 @@ func (c *QQClient) parsePrivateMessage(msg *msg.Message) *message.PrivateMessage
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) parseTempMessage(m *msg.Message) *message.TempMessage {
|
func (c *QQClient) parseTempMessage(msg *msg.Message) *message.TempMessage {
|
||||||
group := c.FindGroupByUin(m.Head.C2CTmpMsgHead.GroupUin)
|
group := c.FindGroupByUin(msg.Head.C2CTmpMsgHead.GroupUin)
|
||||||
mem := group.FindMember(m.Head.FromUin)
|
mem := group.FindMember(msg.Head.FromUin)
|
||||||
sender := &message.Sender{
|
sender := &message.Sender{
|
||||||
Uin: m.Head.FromUin,
|
Uin: msg.Head.FromUin,
|
||||||
Nickname: "Unknown",
|
Nickname: "Unknown",
|
||||||
IsFriend: false,
|
IsFriend: false,
|
||||||
}
|
}
|
||||||
@ -257,15 +256,15 @@ func (c *QQClient) parseTempMessage(m *msg.Message) *message.TempMessage {
|
|||||||
sender.CardName = mem.CardName
|
sender.CardName = mem.CardName
|
||||||
}
|
}
|
||||||
return &message.TempMessage{
|
return &message.TempMessage{
|
||||||
Id: m.Head.MsgSeq,
|
Id: msg.Head.MsgSeq,
|
||||||
GroupCode: group.Code,
|
GroupCode: group.Code,
|
||||||
GroupName: group.Name,
|
GroupName: group.Name,
|
||||||
Sender: sender,
|
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)
|
group := c.FindGroup(m.Head.GroupInfo.GroupCode)
|
||||||
if group == nil {
|
if group == nil {
|
||||||
c.Debug("sync group %v.", m.Head.GroupInfo.GroupCode)
|
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
|
var g *message.GroupMessage
|
||||||
seq := func() []int32 {
|
|
||||||
if len(seqs) == 0 {
|
|
||||||
return []int32{m.Head.MsgSeq}
|
|
||||||
}
|
|
||||||
return seqs
|
|
||||||
}()
|
|
||||||
g = &message.GroupMessage{
|
g = &message.GroupMessage{
|
||||||
Sources: seq,
|
Id: m.Head.MsgSeq,
|
||||||
GroupCode: group.Code,
|
GroupCode: group.Code,
|
||||||
GroupName: string(m.Head.GroupInfo.GroupName),
|
GroupName: string(m.Head.GroupInfo.GroupName),
|
||||||
Sender: sender,
|
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 elem.GeneralFlags != nil && elem.GeneralFlags.LongTextResid != "" {
|
||||||
if f := c.GetForwardMessage(elem.GeneralFlags.LongTextResid); f != nil && len(f.Nodes) == 1 {
|
if f := c.GetForwardMessage(elem.GeneralFlags.LongTextResid); f != nil && len(f.Nodes) == 1 {
|
||||||
g = &message.GroupMessage{
|
g = &message.GroupMessage{
|
||||||
Sources: seq,
|
Id: m.Head.MsgSeq,
|
||||||
GroupCode: group.Code,
|
GroupCode: group.Code,
|
||||||
GroupName: string(m.Head.GroupInfo.GroupName),
|
GroupName: string(m.Head.GroupInfo.GroupName),
|
||||||
Sender: sender,
|
Sender: sender,
|
||||||
@ -377,16 +370,6 @@ func (b *groupMessageBuilder) build() *msg.Message {
|
|||||||
return base
|
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) {
|
func packRequestDataV3(data []byte) (r []byte) {
|
||||||
r = append([]byte{0x0A}, data...)
|
r = append([]byte{0x0A}, data...)
|
||||||
r = append(r, 0x0B)
|
r = append(r, 0x0B)
|
||||||
|
@ -168,7 +168,7 @@ func AtAll() *AtElement {
|
|||||||
|
|
||||||
func NewReply(m *GroupMessage) *ReplyElement {
|
func NewReply(m *GroupMessage) *ReplyElement {
|
||||||
return &ReplyElement{
|
return &ReplyElement{
|
||||||
ReplySeq: m.Sources[0],
|
ReplySeq: m.Id,
|
||||||
Sender: m.Sender.Uin,
|
Sender: m.Sender.Uin,
|
||||||
Time: m.Time,
|
Time: m.Time,
|
||||||
//original: m.OriginalElements,
|
//original: m.OriginalElements,
|
||||||
|
@ -33,7 +33,7 @@ type (
|
|||||||
}
|
}
|
||||||
|
|
||||||
GroupMessage struct {
|
GroupMessage struct {
|
||||||
Sources []int32
|
Id int32
|
||||||
InternalId int32
|
InternalId int32
|
||||||
GroupCode int64
|
GroupCode int64
|
||||||
GroupName string
|
GroupName string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user