From 1d4dc28fc2747f3183beda50e4a6ad26bd36667a Mon Sep 17 00:00:00 2001 From: cosmo Date: Mon, 4 Dec 2023 23:31:44 +0800 Subject: [PATCH 1/3] beta74 --- handlers/send_group_msg.go | 4 ++++ readme.md | 3 +++ 2 files changed, 7 insertions(+) diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index b7c6f6f3..debe6ac0 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -742,6 +742,10 @@ func SendStackMessages(apiv2 openapi.OpenAPI) { pairs := echo.PopGlobalStackMulti(count) for _, pair := range pairs { // 发送消息 + messageID := pair.GroupMessage.MsgID + msgseq := echo.GetMappingSeq(messageID) + echo.AddMappingSeq(messageID, msgseq+1) + pair.GroupMessage.MsgSeq = msgseq + 1 ret, err := apiv2.PostGroupMessage(context.TODO(), pair.Group, pair.GroupMessage) if err != nil { mylog.Printf("发送组合消息失败: %v", err) diff --git a/readme.md b/readme.md index 4a33780f..d9a388fe 100644 --- a/readme.md +++ b/readme.md @@ -86,7 +86,10 @@ gensokyo兼容 [OneBot-v11](https://github.com/botuniverse/onebot-11) ,并在 - [x] 可自定义图片压缩\图床服务 - [x] 可编辑的数据库 - [x] 支持array和信息段 +- [x] 文字,图片,语音,视频,MD,支持多种类型发送 - [x] 支持全域,频道,频道私聊,群,群私聊 +- [x] 主动信息失败自动转被动,提高信息传达可靠性 +- [x] 提前于官方支持群列表 群成员 api - [x] 完善的重连,健壮的连接能力. - [x] 持续更新~ From a765fadff81bdbc54150e73b2e3280f21c83bf09 Mon Sep 17 00:00:00 2001 From: cosmo Date: Mon, 4 Dec 2023 23:44:56 +0800 Subject: [PATCH 2/3] beta74 --- handlers/send_group_msg.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index debe6ac0..473c82c2 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -79,7 +79,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap mylog.Printf("GetLazyMessagesId: %v", messageID) if messageID != "" { //尝试发送栈内信息 - SendStackMessages(apiv2) + SendStackMessages(apiv2, messageID) } } if messageID == "" { @@ -737,7 +737,7 @@ func uploadMedia(ctx context.Context, groupID string, richMediaMessage *dto.Rich } // 发送栈中的消息 -func SendStackMessages(apiv2 openapi.OpenAPI) { +func SendStackMessages(apiv2 openapi.OpenAPI, messageid string) { count := config.GetAtoPCount() pairs := echo.PopGlobalStackMulti(count) for _, pair := range pairs { @@ -746,6 +746,7 @@ func SendStackMessages(apiv2 openapi.OpenAPI) { msgseq := echo.GetMappingSeq(messageID) echo.AddMappingSeq(messageID, msgseq+1) pair.GroupMessage.MsgSeq = msgseq + 1 + pair.GroupMessage.MsgID = messageid ret, err := apiv2.PostGroupMessage(context.TODO(), pair.Group, pair.GroupMessage) if err != nil { mylog.Printf("发送组合消息失败: %v", err) From 0503c83c8fd63b3b8336e219e28f4cc581bf3495 Mon Sep 17 00:00:00 2001 From: cosmo Date: Tue, 5 Dec 2023 00:29:11 +0800 Subject: [PATCH 3/3] beta74 --- handlers/send_group_msg.go | 42 ++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/handlers/send_group_msg.go b/handlers/send_group_msg.go index 473c82c2..f2e5258e 100644 --- a/handlers/send_group_msg.go +++ b/handlers/send_group_msg.go @@ -70,7 +70,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap case "group": // 解析消息内容 messageText, foundItems := parseMessageContent(message.Params) - + var SSM bool // 使用 echo 获取消息ID var messageID string if config.GetLazyMessageId() { @@ -79,7 +79,7 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap mylog.Printf("GetLazyMessagesId: %v", messageID) if messageID != "" { //尝试发送栈内信息 - SendStackMessages(apiv2, messageID) + SSM = true } } if messageID == "" { @@ -114,6 +114,10 @@ func handleSendGroupMsg(client callapi.Client, api openapi.OpenAPI, apiv2 openap } } message.Params.GroupID = originalGroupID + if SSM { + mylog.Printf("正在使用Msgid:%v 补发之前失败的主动信息,请注意AtoP不要设置超过3,否则可能会影响正常信息发送", messageID) + SendStackMessages(apiv2, messageID, originalGroupID) + } mylog.Println("群组发信息messageText:", messageText) //mylog.Println("foundItems:", foundItems) if messageID == "" { @@ -737,26 +741,28 @@ func uploadMedia(ctx context.Context, groupID string, richMediaMessage *dto.Rich } // 发送栈中的消息 -func SendStackMessages(apiv2 openapi.OpenAPI, messageid string) { +func SendStackMessages(apiv2 openapi.OpenAPI, messageid string, originalGroupID string) { count := config.GetAtoPCount() pairs := echo.PopGlobalStackMulti(count) for _, pair := range pairs { - // 发送消息 - messageID := pair.GroupMessage.MsgID - msgseq := echo.GetMappingSeq(messageID) - echo.AddMappingSeq(messageID, msgseq+1) - pair.GroupMessage.MsgSeq = msgseq + 1 - pair.GroupMessage.MsgID = messageid - ret, err := apiv2.PostGroupMessage(context.TODO(), pair.Group, pair.GroupMessage) - if err != nil { - mylog.Printf("发送组合消息失败: %v", err) - continue // 其他错误处理 - } + if pair.Group == originalGroupID { + // 发送消息 + messageID := pair.GroupMessage.MsgID + msgseq := echo.GetMappingSeq(messageID) + echo.AddMappingSeq(messageID, msgseq+1) + pair.GroupMessage.MsgSeq = msgseq + 1 + pair.GroupMessage.MsgID = messageid + ret, err := apiv2.PostGroupMessage(context.TODO(), pair.Group, pair.GroupMessage) + if err != nil { + mylog.Printf("发送组合消息失败: %v", err) + continue // 其他错误处理 + } - // 检查错误码 - if ret.Message.Ret == 22009 { - mylog.Printf("信息再次发送失败,加入到队列中,下次被动信息进行发送") - echo.PushGlobalStack(pair) + // 检查错误码 + if ret.Message.Ret == 22009 { + mylog.Printf("信息再次发送失败,加入到队列中,下次被动信息进行发送") + echo.PushGlobalStack(pair) + } } }