Skip to content

Commit d6312aa

Browse files
committed
report temp message
1 parent 9e12cea commit d6312aa

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

pkg/plugin/plugin.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
type (
1010
PrivateMessagePlugin = func(*client.QQClient, *message.PrivateMessage) int32
1111
GroupMessagePlugin = func(*client.QQClient, *message.GroupMessage) int32
12+
TempMessagePlugin = func(*client.QQClient, *message.TempMessage) int32
1213
MemberJoinGroupPlugin = func(*client.QQClient, *client.MemberJoinGroupEvent) int32
1314
MemberLeaveGroupPlugin = func(*client.QQClient, *client.MemberLeaveGroupEvent) int32
1415
JoinGroupPlugin = func(*client.QQClient, *client.GroupInfo) int32
@@ -28,6 +29,7 @@ const (
2829

2930
var PrivateMessagePluginList = make([]PrivateMessagePlugin, 0)
3031
var GroupMessagePluginList = make([]GroupMessagePlugin, 0)
32+
var TempMessagePluginList = make([]TempMessagePlugin, 0)
3133
var MemberJoinGroupPluginList = make([]MemberJoinGroupPlugin, 0)
3234
var MemberLeaveGroupPluginList = make([]MemberLeaveGroupPlugin, 0)
3335
var JoinGroupPluginList = make([]JoinGroupPlugin, 0)
@@ -42,6 +44,7 @@ var NewFriendAddedPluginList = make([]NewFriendAddedPlugin, 0)
4244
func Serve(cli *client.QQClient) {
4345
cli.OnPrivateMessage(handlePrivateMessage)
4446
cli.OnGroupMessage(handleGroupMessage)
47+
cli.OnTempMessage(handleTempMessage)
4548
cli.OnGroupMemberJoined(handleMemberJoinGroup)
4649
cli.OnGroupMemberLeaved(handleMemberLeaveGroup)
4750
cli.OnJoinGroup(handleJoinGroup)
@@ -64,6 +67,11 @@ func AddGroupMessagePlugin(plugin GroupMessagePlugin) {
6467
GroupMessagePluginList = append(GroupMessagePluginList, plugin)
6568
}
6669

70+
// 添加临时消息插件
71+
func AddTempMessagePlugin(plugin TempMessagePlugin) {
72+
TempMessagePluginList = append(TempMessagePluginList, plugin)
73+
}
74+
6775
// 添加群成员加入插件
6876
func AddMemberJoinGroupPlugin(plugin MemberJoinGroupPlugin) {
6977
MemberJoinGroupPluginList = append(MemberJoinGroupPluginList, plugin)
@@ -134,6 +142,16 @@ func handleGroupMessage(cli *client.QQClient, event *message.GroupMessage) {
134142
})
135143
}
136144

145+
func handleTempMessage(cli *client.QQClient, event *message.TempMessage) {
146+
SafeGo(func() {
147+
for _, plugin := range TempMessagePluginList {
148+
if result := plugin(cli, event); result == MessageBlock {
149+
break
150+
}
151+
}
152+
})
153+
}
154+
137155
func handleMemberJoinGroup(cli *client.QQClient, event *client.MemberJoinGroupEvent) {
138156
SafeGo(func() {
139157
for _, plugin := range MemberJoinGroupPluginList {

service/handler/bot.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ func CreateBotImpl(uin int64, password string) {
133133
log.Infof("加载上报插件 Report")
134134
plugin.AddPrivateMessagePlugin(plugins.ReportPrivateMessage)
135135
plugin.AddGroupMessagePlugin(plugins.ReportGroupMessage)
136+
plugin.AddTempMessagePlugin(plugins.ReportTempMessage)
136137
plugin.AddMemberJoinGroupPlugin(plugins.ReportMemberJoin)
137138
plugin.AddMemberLeaveGroupPlugin(plugins.ReportMemberLeave)
138139
plugin.AddJoinGroupPlugin(plugins.ReportJoinGroup)

service/plugins/report.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,32 @@ func ReportGroupMessage(cli *client.QQClient, event *message.GroupMessage) int32
9797
return plugin.MessageIgnore
9898
}
9999

100+
func ReportTempMessage(cli *client.QQClient, event *message.TempMessage) int32 {
101+
// TODO 撤回?
102+
eventProto := &onebot.Frame{
103+
FrameType: onebot.Frame_TPrivateMessageEvent,
104+
}
105+
eventProto.Data = &onebot.Frame_PrivateMessageEvent{
106+
PrivateMessageEvent: &onebot.PrivateMessageEvent{
107+
Time: time.Now().Unix(),
108+
SelfId: cli.Uin,
109+
PostType: "message",
110+
MessageType: "private",
111+
SubType: "group",
112+
MessageId: event.Id,
113+
UserId: event.Sender.Uin,
114+
Message: bot.MiraiMsgToProtoMsg(event.Elements),
115+
RawMessage: bot.MiraiMsgToRawMsg(event.Elements),
116+
Sender: &onebot.PrivateMessageEvent_Sender{
117+
UserId: event.Sender.Uin,
118+
Nickname: event.Sender.Nickname,
119+
},
120+
},
121+
}
122+
bot.HandleEventFrame(cli, eventProto)
123+
return plugin.MessageIgnore
124+
}
125+
100126
func ReportMemberJoin(cli *client.QQClient, event *client.MemberJoinGroupEvent) int32 {
101127
eventProto := &onebot.Frame{
102128
FrameType: onebot.Frame_TGroupIncreaseNoticeEvent,

0 commit comments

Comments
 (0)