mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 19:17:38 +08:00
fix(client): don't fragment reply message.
This commit is contained in:
parent
5b20b58d78
commit
4128ec65a0
@ -106,8 +106,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
|
|||||||
})
|
})
|
||||||
defer c.onGroupMessageReceipt(eid)
|
defer c.onGroupMessageReceipt(eid)
|
||||||
imgCount := 0
|
imgCount := 0
|
||||||
frag := false
|
frag := true
|
||||||
L:
|
|
||||||
for _, e := range m.Elements {
|
for _, e := range m.Elements {
|
||||||
switch e.Type() {
|
switch e.Type() {
|
||||||
case message.Image:
|
case message.Image:
|
||||||
@ -116,11 +115,10 @@ L:
|
|||||||
forward = true
|
forward = true
|
||||||
fallthrough
|
fallthrough
|
||||||
case message.Reply, message.Voice, message.Service:
|
case message.Reply, message.Voice, message.Service:
|
||||||
frag = true
|
frag = false
|
||||||
break L
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !forward && !frag && (imgCount > 1 || message.EstimateLength(m.Elements) > 100) {
|
if !forward && frag && (imgCount > 1 || message.EstimateLength(m.Elements) > 100) {
|
||||||
div := int32(rand.Uint32())
|
div := int32(rand.Uint32())
|
||||||
fragmented := m.ToFragmented()
|
fragmented := m.ToFragmented()
|
||||||
for i, elems := range fragmented {
|
for i, elems := range fragmented {
|
||||||
|
@ -17,12 +17,21 @@ func (c *QQClient) SendPrivateMessage(target int64, m *message.SendingMessage) *
|
|||||||
mr := int32(rand.Uint32())
|
mr := int32(rand.Uint32())
|
||||||
var seq int32
|
var seq int32
|
||||||
t := time.Now().Unix()
|
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)
|
msgLen := message.EstimateLength(m.Elements)
|
||||||
if msgLen > 5000 || imgCount > 50 {
|
if msgLen > 5000 || imgCount > 50 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if msgLen > 300 || imgCount > 2 {
|
if frag && (msgLen > 300 || imgCount > 2) {
|
||||||
div := int32(rand.Uint32())
|
div := int32(rand.Uint32())
|
||||||
fragmented := m.ToFragmented()
|
fragmented := m.ToFragmented()
|
||||||
for i, elems := range fragmented {
|
for i, elems := range fragmented {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user