From 4128ec65a05d289e8f5d70bc429a4b5782b2d070 Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Wed, 14 Jul 2021 21:41:18 +0800 Subject: [PATCH] fix(client): don't fragment reply message. --- client/group_msg.go | 8 +++----- client/private_msg.go | 13 +++++++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/client/group_msg.go b/client/group_msg.go index 5c98ee99..2d31f148 100644 --- a/client/group_msg.go +++ b/client/group_msg.go @@ -106,8 +106,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se }) defer c.onGroupMessageReceipt(eid) imgCount := 0 - frag := false -L: + frag := true for _, e := range m.Elements { switch e.Type() { case message.Image: @@ -116,11 +115,10 @@ L: forward = true fallthrough case message.Reply, message.Voice, message.Service: - frag = true - break L + frag = false } } - if !forward && !frag && (imgCount > 1 || message.EstimateLength(m.Elements) > 100) { + if !forward && frag && (imgCount > 1 || message.EstimateLength(m.Elements) > 100) { div := int32(rand.Uint32()) fragmented := m.ToFragmented() for i, elems := range fragmented { diff --git a/client/private_msg.go b/client/private_msg.go index 5377a4ff..a692322c 100644 --- a/client/private_msg.go +++ b/client/private_msg.go @@ -17,12 +17,21 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) * mr := int32(rand.Uint32()) var seq int32 t := time.Now().Unix() - imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image }) + imgCount := 0 + frag := true + for _, e := range m.Elements { + switch e.Type() { + case message.Image: + imgCount++ + case message.Reply: + frag = false + } + } msgLen := message.EstimateLength(m.Elements) if msgLen > 5000 || imgCount > 50 { return nil } - if msgLen > 300 || imgCount > 2 { + if frag && (msgLen > 300 || imgCount > 2) { div := int32(rand.Uint32()) fragmented := m.ToFragmented() for i, elems := range fragmented {