11package bot
22
33import (
4+ "math"
45 "strconv"
56
67 "github.com/Mrs4s/MiraiGo/client"
@@ -10,6 +11,28 @@ import (
1011 log "github.com/sirupsen/logrus"
1112)
1213
14+ const MAX_TEXT_LENGTH = 64
15+
16+ // 风控临时解决方案
17+ func splitText (content string , limit int ) []string {
18+ text := []rune (content )
19+
20+ result := make ([]string , 0 )
21+ num := int (math .Ceil (float64 (len (text )) / float64 (limit )))
22+ for i := 0 ; i < num ; i ++ {
23+ start := i * limit
24+ end := func () int {
25+ if (i + 1 )* limit > len (text ) {
26+ return len (text )
27+ } else {
28+ return (i + 1 ) * limit
29+ }
30+ }()
31+ result = append (result , string (text [start :end ]))
32+ }
33+ return result
34+ }
35+
1336// 预处理私聊消息,上传图片,MiraiGo更新后删除
1437func preProcessPrivateSendingMessage (cli * client.QQClient , target int64 , m * message.SendingMessage ) {
1538 newElements := make ([]message.IMessageElement , 0 , len (m .Elements ))
@@ -32,6 +55,14 @@ func preProcessPrivateSendingMessage(cli *client.QQClient, target int64, m *mess
3255func preProcessGroupSendingMessage (cli * client.QQClient , groupCode int64 , m * message.SendingMessage ) {
3356 newElements := make ([]message.IMessageElement , 0 , len (m .Elements ))
3457 for _ , element := range m .Elements {
58+ if i , ok := element .(* message.TextElement ); ok {
59+ content := i .Content
60+ textList := splitText (content , MAX_TEXT_LENGTH )
61+ for _ , text := range textList {
62+ newElements = append (newElements , message .NewText (text ))
63+ }
64+ continue
65+ }
3566 if i , ok := element .(* message.ImageElement ); ok {
3667 gm , err := cli .UploadGroupImage (groupCode , i .Data )
3768 if err != nil {
@@ -83,7 +114,7 @@ func HandleSendGroupMsg(cli *client.QQClient, req *onebot.SendGroupMsgReq) *oneb
83114 sendingMessage := & message.SendingMessage {Elements : miraiMsg }
84115 log .Infof ("Bot(%d) Group(%d) <- %s" , cli .Uin , req .GroupId , MiraiMsgToRawMsg (miraiMsg ))
85116 preProcessGroupSendingMessage (cli , req .GroupId , sendingMessage )
86- ret := cli .SendGroupMessage (req .GroupId , sendingMessage )
117+ ret := cli .SendGroupMessage (req .GroupId , sendingMessage , true )
87118 if ret == nil || ret .Id == - 1 {
88119 log .Warnf ("发送群消息失败,可能被风控" )
89120 return nil
0 commit comments