1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 19:17:38 +08:00

client: add option to highway message

This commit is contained in:
wdvxdr 2022-05-23 11:02:25 +08:00
parent 2b2be6693d
commit cb56240978
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6
2 changed files with 9 additions and 9 deletions

View File

@ -34,7 +34,9 @@ type QQClient struct {
once sync.Once once sync.Once
// option // option
AllowSlider bool AllowSlider bool
UseHighwayMessage bool
UseFragmentMessage bool
// account info // account info
Online atomic.Bool Online atomic.Bool

View File

@ -34,25 +34,23 @@ func init() {
} }
// SendGroupMessage 发送群消息 // SendGroupMessage 发送群消息
func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage, f ...bool) *message.GroupMessage { func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage) *message.GroupMessage {
useFram := false useHighwayMessage := false
if len(f) > 0 {
useFram = f[0]
}
imgCount := 0 imgCount := 0
for _, e := range m.Elements { for _, e := range m.Elements {
switch e.Type() { switch e.Type() {
case message.Image: case message.Image:
imgCount++ imgCount++
case message.Reply: case message.Reply:
useFram = false useHighwayMessage = true
} }
} }
msgLen := message.EstimateLength(m.Elements) msgLen := message.EstimateLength(m.Elements)
if msgLen > message.MaxMessageSize || imgCount > 50 { if msgLen > message.MaxMessageSize || imgCount > 50 {
return nil return nil
} }
if !useFram && (msgLen > 100 || imgCount > 2) { useHighwayMessage = useHighwayMessage || msgLen > 100 || imgCount > 2
if useHighwayMessage && c.UseHighwayMessage {
lmsg, err := c.uploadGroupLongMessage(groupCode, lmsg, err := c.uploadGroupLongMessage(groupCode,
message.NewForwardMessage().AddNode(&message.ForwardNode{ message.NewForwardMessage().AddNode(&message.ForwardNode{
SenderId: c.Uin, SenderId: c.Uin,
@ -118,7 +116,7 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
serviceFlag = false serviceFlag = false
} }
} }
if !forward && serviceFlag && (imgCount > 1 || message.EstimateLength(m.Elements) > 100) { if !forward && serviceFlag && c.UseFragmentMessage && (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 {