Skip to content

Commit dd1a674

Browse files
committed
join leave group event
1 parent c14a811 commit dd1a674

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ func main() {
5353
plugin.AddGroupMessagePlugin(plugins.ReportGroupMessage)
5454
plugin.AddMemberJoinGroupPlugin(plugins.ReportMemberJoin)
5555
plugin.AddMemberLeaveGroupPlugin(plugins.ReportMemberLeave)
56+
plugin.AddJoinGroupPlugin(plugins.ReportJoinGroup)
57+
plugin.AddLeaveGroupPlugin(plugins.ReportLeaveGroup)
5658

5759
plugin.Serve(cli)
5860
log.Infof("插件加载完成")

pkg/plugin/plugin.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ type (
1111
GroupMessagePlugin = func(*client.QQClient, *message.GroupMessage) int32
1212
MemberJoinGroupPlugin = func(*client.QQClient, *client.MemberJoinGroupEvent) int32
1313
MemberLeaveGroupPlugin = func(*client.QQClient, *client.MemberLeaveGroupEvent) int32
14+
JoinGroupPlugin = func(*client.QQClient, *client.GroupInfo) int32
15+
LeaveGroupPlugin = func(*client.QQClient, *client.GroupLeaveEvent) int32
1416
)
1517

1618
const (
@@ -22,12 +24,16 @@ var PrivateMessagePluginList = make([]PrivateMessagePlugin, 0)
2224
var GroupMessagePluginList = make([]GroupMessagePlugin, 0)
2325
var MemberJoinGroupPluginList = make([]MemberJoinGroupPlugin, 0)
2426
var MemberLeaveGroupPluginList = make([]MemberLeaveGroupPlugin, 0)
27+
var JoinGroupPluginList = make([]JoinGroupPlugin, 0)
28+
var LeaveGroupPluginList = make([]LeaveGroupPlugin, 0)
2529

2630
func Serve(cli *client.QQClient) {
2731
cli.OnPrivateMessage(handlePrivateMessage)
2832
cli.OnGroupMessage(handleGroupMessage)
2933
cli.OnGroupMemberJoined(handleMemberJoinGroup)
3034
cli.OnGroupMemberLeaved(handleMemberLeaveGroup)
35+
cli.OnJoinGroup(handleJoinGroup)
36+
cli.OnLeaveGroup(handleLeaveGroup)
3137
}
3238

3339
// 添加私聊消息插件
@@ -50,6 +56,16 @@ func AddMemberLeaveGroupPlugin(plugin MemberLeaveGroupPlugin) {
5056
MemberLeaveGroupPluginList = append(MemberLeaveGroupPluginList, plugin)
5157
}
5258

59+
// 添加机器人进群插件
60+
func AddJoinGroupPlugin(plugin JoinGroupPlugin) {
61+
JoinGroupPluginList = append(JoinGroupPluginList, plugin)
62+
}
63+
64+
// 添加机器人离开群插件
65+
func AddLeaveGroupPlugin(plugin LeaveGroupPlugin) {
66+
LeaveGroupPluginList = append(LeaveGroupPluginList, plugin)
67+
}
68+
5369
func handlePrivateMessage(cli *client.QQClient, event *message.PrivateMessage) {
5470
SafeGo(func() {
5571
for _, plugin := range PrivateMessagePluginList {
@@ -90,6 +106,26 @@ func handleMemberLeaveGroup(cli *client.QQClient, event *client.MemberLeaveGroup
90106
})
91107
}
92108

109+
func handleJoinGroup(cli *client.QQClient, event *client.GroupInfo) {
110+
SafeGo(func() {
111+
for _, plugin := range JoinGroupPluginList {
112+
if result := plugin(cli, event); result == MessageBlock {
113+
break
114+
}
115+
}
116+
})
117+
}
118+
119+
func handleLeaveGroup(cli *client.QQClient, event *client.GroupLeaveEvent) {
120+
SafeGo(func() {
121+
for _, plugin := range LeaveGroupPluginList {
122+
if result := plugin(cli, event); result == MessageBlock {
123+
break
124+
}
125+
}
126+
})
127+
}
128+
93129
func SafeGo(fn func()) {
94130
go func() {
95131
defer func() {

service/plugins/report.go

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package plugins
22

33
import (
4+
"time"
5+
46
"github.com/Mrs4s/MiraiGo/client"
57
"github.com/Mrs4s/MiraiGo/message"
68
"github.com/ProtobufBot/Go-Mirai-Client/pkg/plugin"
79
"github.com/ProtobufBot/Go-Mirai-Client/proto_gen/onebot"
810
"github.com/ProtobufBot/Go-Mirai-Client/service/bot"
9-
"time"
1011
)
1112

1213
func ReportPrivateMessage(cli *client.QQClient, event *message.PrivateMessage) int32 {
@@ -71,6 +72,7 @@ func ReportMemberJoin(cli *client.QQClient, event *client.MemberJoinGroupEvent)
7172
SubType: "approve",
7273
GroupId: event.Group.Code,
7374
UserId: event.Member.Uin,
75+
OperatorId: 0,
7476
},
7577
}
7678
bot.HandleEventFrame(cli, eventProto)
@@ -103,3 +105,50 @@ func ReportMemberLeave(cli *client.QQClient, event *client.MemberLeaveGroupEvent
103105
bot.HandleEventFrame(cli, eventProto)
104106
return plugin.MessageIgnore
105107
}
108+
109+
func ReportJoinGroup(cli *client.QQClient, event *client.GroupInfo) int32 {
110+
eventProto := &onebot.Frame{
111+
FrameType: onebot.Frame_TGroupIncreaseNoticeEvent,
112+
}
113+
eventProto.Data = &onebot.Frame_GroupIncreaseNoticeEvent{
114+
GroupIncreaseNoticeEvent: &onebot.GroupIncreaseNoticeEvent{
115+
Time: time.Now().Unix(),
116+
SelfId: cli.Uin,
117+
PostType: "message",
118+
NoticeType: "group_increase",
119+
SubType: "approve",
120+
GroupId: event.Code,
121+
UserId: cli.Uin,
122+
OperatorId: 0,
123+
},
124+
}
125+
bot.HandleEventFrame(cli, eventProto)
126+
return plugin.MessageIgnore
127+
}
128+
129+
func ReportLeaveGroup(cli *client.QQClient, event *client.GroupLeaveEvent) int32 {
130+
eventProto := &onebot.Frame{
131+
FrameType: onebot.Frame_TGroupDecreaseNoticeEvent,
132+
}
133+
subType := "leave"
134+
var operatorId int64 = 0
135+
if event.Operator != nil {
136+
subType = "kick"
137+
operatorId = event.Operator.Uin
138+
}
139+
140+
eventProto.Data = &onebot.Frame_GroupDecreaseNoticeEvent{
141+
GroupDecreaseNoticeEvent: &onebot.GroupDecreaseNoticeEvent{
142+
Time: time.Now().Unix(),
143+
SelfId: cli.Uin,
144+
PostType: "message",
145+
NoticeType: "group_decrease",
146+
SubType: subType,
147+
GroupId: event.Group.Code,
148+
UserId: cli.Uin,
149+
OperatorId: operatorId,
150+
},
151+
}
152+
bot.HandleEventFrame(cli, eventProto)
153+
return plugin.MessageIgnore
154+
}

0 commit comments

Comments
 (0)