mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
client: remove (*QQClient).UseHighwayMessage
This commit is contained in:
parent
aa5a8c45fc
commit
7f557c197c
@ -36,7 +36,6 @@ type QQClient struct {
|
|||||||
|
|
||||||
// option
|
// option
|
||||||
AllowSlider bool
|
AllowSlider bool
|
||||||
UseHighwayMessage bool
|
|
||||||
UseFragmentMessage bool
|
UseFragmentMessage bool
|
||||||
|
|
||||||
// account info
|
// account info
|
||||||
|
@ -2,7 +2,6 @@ package client
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/md5"
|
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"math"
|
"math"
|
||||||
@ -13,7 +12,6 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
"github.com/Mrs4s/MiraiGo/client/internal/highway"
|
|
||||||
"github.com/Mrs4s/MiraiGo/client/internal/network"
|
"github.com/Mrs4s/MiraiGo/client/internal/network"
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x388"
|
"github.com/Mrs4s/MiraiGo/client/pb/cmd0x388"
|
||||||
"github.com/Mrs4s/MiraiGo/client/pb/longmsg"
|
"github.com/Mrs4s/MiraiGo/client/pb/longmsg"
|
||||||
@ -36,36 +34,17 @@ func init() {
|
|||||||
|
|
||||||
// SendGroupMessage 发送群消息
|
// SendGroupMessage 发送群消息
|
||||||
func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage) *message.GroupMessage {
|
func (c *QQClient) SendGroupMessage(groupCode int64, m *message.SendingMessage) *message.GroupMessage {
|
||||||
useHighwayMessage := false
|
|
||||||
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:
|
|
||||||
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
|
||||||
}
|
}
|
||||||
useHighwayMessage = useHighwayMessage || msgLen > 100 || imgCount > 2
|
|
||||||
if useHighwayMessage && c.UseHighwayMessage {
|
|
||||||
lmsg, err := c.uploadGroupLongMessage(groupCode,
|
|
||||||
message.NewForwardMessage().AddNode(&message.ForwardNode{
|
|
||||||
SenderId: c.Uin,
|
|
||||||
SenderName: c.Nickname,
|
|
||||||
Time: int32(time.Now().Unix()),
|
|
||||||
Message: m.Elements,
|
|
||||||
}))
|
|
||||||
if err == nil {
|
|
||||||
ret := c.sendGroupMessage(groupCode, false, &message.SendingMessage{Elements: []message.IMessageElement{lmsg}})
|
|
||||||
ret.Elements = m.Elements
|
|
||||||
return ret
|
|
||||||
}
|
|
||||||
c.error("%v", err)
|
|
||||||
}
|
|
||||||
return c.sendGroupMessage(groupCode, false, m)
|
return c.sendGroupMessage(groupCode, false, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,34 +138,6 @@ func (c *QQClient) sendGroupMessage(groupCode int64, forward bool, m *message.Se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *QQClient) uploadGroupLongMessage(groupCode int64, m *message.ForwardMessage) (*message.ServiceElement, error) {
|
|
||||||
ts := time.Now().UnixNano()
|
|
||||||
seq := c.nextGroupSeq()
|
|
||||||
data, hash := m.CalculateValidationData(seq, rand.Int31(), groupCode)
|
|
||||||
rsp, body, err := c.multiMsgApplyUp(groupCode, data, hash, 1)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.Errorf("upload long message error: %v", err)
|
|
||||||
}
|
|
||||||
for i, ip := range rsp.Uint32UpIp {
|
|
||||||
addr := highway.Addr{IP: uint32(ip), Port: int(rsp.Uint32UpPort[i])}
|
|
||||||
hash := md5.Sum(body)
|
|
||||||
input := highway.Transaction{
|
|
||||||
CommandID: 27,
|
|
||||||
Ticket: rsp.MsgSig,
|
|
||||||
Body: bytes.NewReader(body),
|
|
||||||
Size: int64(len(body)),
|
|
||||||
Sum: hash[:],
|
|
||||||
}
|
|
||||||
err := c.highwaySession.Upload(addr, input)
|
|
||||||
if err != nil {
|
|
||||||
c.error("highway upload long message error: %v", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
return genLongTemplate(rsp.MsgResid, m.Brief(), ts), nil
|
|
||||||
}
|
|
||||||
return nil, errors.New("upload long message error: highway server list is empty or not available server.")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *QQClient) multiMsgApplyUp(groupCode int64, data []byte, hash []byte, buType int32) (*multimsg.MultiMsgApplyUpRsp, []byte, error) {
|
func (c *QQClient) multiMsgApplyUp(groupCode int64, data []byte, hash []byte, buType int32) (*multimsg.MultiMsgApplyUpRsp, []byte, error) {
|
||||||
i, err := c.sendAndWait(c.buildMultiApplyUpPacket(data, hash, buType, utils.ToGroupUin(groupCode)))
|
i, err := c.sendAndWait(c.buildMultiApplyUpPacket(data, hash, buType, utils.ToGroupUin(groupCode)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user