1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00

fix(client): don't fragment reply message.

This commit is contained in:
wdvxdr 2021-07-14 21:41:18 +08:00
parent 5b20b58d78
commit 4128ec65a0
No known key found for this signature in database
GPG Key ID: 55FF1414A69CEBA6
2 changed files with 14 additions and 7 deletions

View File

@ -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 {

View File

@ -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 {