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
1618const (
@@ -22,12 +24,16 @@ var PrivateMessagePluginList = make([]PrivateMessagePlugin, 0)
2224var GroupMessagePluginList = make ([]GroupMessagePlugin , 0 )
2325var MemberJoinGroupPluginList = make ([]MemberJoinGroupPlugin , 0 )
2426var MemberLeaveGroupPluginList = make ([]MemberLeaveGroupPlugin , 0 )
27+ var JoinGroupPluginList = make ([]JoinGroupPlugin , 0 )
28+ var LeaveGroupPluginList = make ([]LeaveGroupPlugin , 0 )
2529
2630func 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+
5369func 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+
93129func SafeGo (fn func ()) {
94130 go func () {
95131 defer func () {
0 commit comments