Skip to content

Commit 92a1dc6

Browse files
committed
delete msg
1 parent dd1a674 commit 92a1dc6

File tree

4 files changed

+37
-4
lines changed

4 files changed

+37
-4
lines changed

service/bot/api_handler.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/Mrs4s/MiraiGo/client"
55
"github.com/Mrs4s/MiraiGo/message"
66
"github.com/ProtobufBot/Go-Mirai-Client/proto_gen/onebot"
7+
"github.com/ProtobufBot/Go-Mirai-Client/service/cache"
78
log "github.com/sirupsen/logrus"
89
)
910

@@ -24,8 +25,10 @@ func HandleSendPrivateMsg(cli *client.QQClient, req *onebot.SendPrivateMsgReq) *
2425
newElem = append(newElem, elem)
2526
}
2627
ret := cli.SendPrivateMessage(req.UserId, &message.SendingMessage{Elements: newElem})
28+
messageId := cache.NextGlobalSeq()
29+
cache.PrivateMessageLru.Add(messageId, ret)
2730
return &onebot.SendPrivateMsgResp{
28-
MessageId: ret.Id,
31+
MessageId: messageId,
2932
}
3033
}
3134

@@ -54,7 +57,19 @@ func HandleSendGroupMsg(cli *client.QQClient, req *onebot.SendGroupMsgReq) *oneb
5457
newElem = append(newElem, elem)
5558
}
5659
ret := cli.SendGroupMessage(req.GroupId, &message.SendingMessage{Elements: newElem})
60+
messageId := cache.NextGlobalSeq()
61+
cache.GroupMessageLru.Add(messageId, ret)
5762
return &onebot.SendGroupMsgResp{
58-
MessageId: ret.Id,
63+
MessageId: messageId,
5964
}
6065
}
66+
67+
func HandleDeleteMsg(cli *client.QQClient, req *onebot.DeleteMsgReq) *onebot.DeleteMsgResp {
68+
eventInterface, ok := cache.GroupMessageLru.Get(req.MessageId)
69+
if !ok {
70+
return &onebot.DeleteMsgResp{}
71+
}
72+
event := eventInterface.(*message.GroupMessage)
73+
cli.RecallGroupMessage(event.GroupCode, event.Id, event.InternalId)
74+
return &onebot.DeleteMsgResp{}
75+
}

service/bot/remote.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ func handleApiFrame(cli *client.QQClient, req *onebot.Frame) *onebot.Frame {
9898
resp.Data = &onebot.Frame_SendGroupMsgResp{
9999
SendGroupMsgResp: HandleSendGroupMsg(cli, data.SendGroupMsgReq),
100100
}
101+
case *onebot.Frame_DeleteMsgReq:
102+
resp.FrameType = onebot.Frame_TDeleteMsgReq
103+
resp.Data = &onebot.Frame_DeleteMsgResp{
104+
DeleteMsgResp: HandleDeleteMsg(cli, data.DeleteMsgReq),
105+
}
101106
default:
102107
return resp
103108
}

service/cache/cache.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
package cache
22

33
import (
4+
"sync/atomic"
5+
46
"github.com/golang/groupcache/lru"
57
)
68

9+
var GlobalSeq int32 = 0
10+
11+
func NextGlobalSeq() int32 {
12+
return atomic.AddInt32(&GlobalSeq, 1)
13+
}
14+
715
var PrivateMessageLru = lru.New(512)
816
var GroupMessageLru = lru.New(2048)
917
var FriendRequestLru = lru.New(128)

service/plugins/report.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ import (
88
"github.com/ProtobufBot/Go-Mirai-Client/pkg/plugin"
99
"github.com/ProtobufBot/Go-Mirai-Client/proto_gen/onebot"
1010
"github.com/ProtobufBot/Go-Mirai-Client/service/bot"
11+
"github.com/ProtobufBot/Go-Mirai-Client/service/cache"
1112
)
1213

1314
func ReportPrivateMessage(cli *client.QQClient, event *message.PrivateMessage) int32 {
15+
messageId := cache.NextGlobalSeq()
16+
cache.PrivateMessageLru.Add(messageId, event)
1417
eventProto := &onebot.Frame{
1518
FrameType: onebot.Frame_TPrivateMessageEvent,
1619
}
@@ -19,7 +22,7 @@ func ReportPrivateMessage(cli *client.QQClient, event *message.PrivateMessage) i
1922
PostType: "message",
2023
MessageType: "private",
2124
SubType: "normal",
22-
MessageId: event.Id,
25+
MessageId: messageId,
2326
UserId: event.Sender.Uin,
2427
Message: bot.MiraiMsgToProtoMsg(event.Elements),
2528
RawMessage: bot.MiraiMsgToRawMsg(event.Elements),
@@ -34,6 +37,8 @@ func ReportPrivateMessage(cli *client.QQClient, event *message.PrivateMessage) i
3437
}
3538

3639
func ReportGroupMessage(cli *client.QQClient, event *message.GroupMessage) int32 {
40+
messageId := cache.NextGlobalSeq()
41+
cache.GroupMessageLru.Add(messageId, event)
3742
eventProto := &onebot.Frame{
3843
FrameType: onebot.Frame_TGroupMessageEvent,
3944
}
@@ -44,7 +49,7 @@ func ReportGroupMessage(cli *client.QQClient, event *message.GroupMessage) int32
4449
PostType: "message",
4550
MessageType: "group",
4651
SubType: "normal",
47-
MessageId: event.Id,
52+
MessageId: messageId,
4853
GroupId: event.GroupCode,
4954
UserId: event.Sender.Uin,
5055
Message: bot.MiraiMsgToProtoMsg(event.Elements),

0 commit comments

Comments
 (0)