From cd01eed601793ab120de422ef919baad40bc6934 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 20 Mar 2021 18:11:08 +0800 Subject: [PATCH 1/2] Patch message length logic always false problem --- client/private_msg.go | 2 +- message/message.go | 2 +- utils/string.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/private_msg.go b/client/private_msg.go index bfd7d922..3f4f07a6 100644 --- a/client/private_msg.go +++ b/client/private_msg.go @@ -16,7 +16,7 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) * t := time.Now().Unix() imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image }) msgLen := message.EstimateLength(m.Elements, 703) - if msgLen > 5000 || imgCount > 50 { + if msgLen > 703 || imgCount > 50 { return nil } if msgLen > 300 || imgCount > 2 { diff --git a/message/message.go b/message/message.go index fba953a7..3920c4fb 100644 --- a/message/message.go +++ b/message/message.go @@ -248,7 +248,7 @@ func (msg *SendingMessage) ToFragmented() [][]IMessageElement { func EstimateLength(elems []IMessageElement, limit int) int { sum := 0 for _, elem := range elems { - if sum >= limit { + if sum > limit { break } left := int(math.Max(float64(limit-sum), 0)) diff --git a/utils/string.go b/utils/string.go index ad9803b7..48703a74 100644 --- a/utils/string.go +++ b/utils/string.go @@ -55,7 +55,7 @@ func ChineseLength(str string, limit int) int { default: sum += 4 } - if sum >= limit { + if sum > limit { break } } From f7e5b326dc3fdad06456649a7b87e30f932ec7bc Mon Sep 17 00:00:00 2001 From: sam01101 Date: Sat, 20 Mar 2021 21:29:13 +0800 Subject: [PATCH 2/2] Keep private message length as 5k --- client/private_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/private_msg.go b/client/private_msg.go index 3f4f07a6..bfd7d922 100644 --- a/client/private_msg.go +++ b/client/private_msg.go @@ -16,7 +16,7 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) * t := time.Now().Unix() imgCount := m.Count(func(e message.IMessageElement) bool { return e.Type() == message.Image }) msgLen := message.EstimateLength(m.Elements, 703) - if msgLen > 703 || imgCount > 50 { + if msgLen > 5000 || imgCount > 50 { return nil } if msgLen > 300 || imgCount > 2 {