From 9bd4f957c96bcac4d153f5e066d85243107a2e4d Mon Sep 17 00:00:00 2001 From: Yiwen-Chan Date: Wed, 9 Dec 2020 21:50:52 +0800 Subject: [PATCH] :bookmark: Update to 1.0.6 --- app.go => GroupManager.go | 4 ++-- GroupManager.yml | 7 ++++++ go.mod | 3 +-- go.sum | 8 ++++--- modules/main.go | 47 ++++++++++++++++++++++++++++++++++++++- modules/manage.go | 15 ++++++++----- modules/mute.go | 14 ++++++------ modules/notice.go | 2 +- modules/request.go | 9 ++++---- modules/sender.go | 10 ++++----- modules/title.go | 2 +- modules/utils.go | 6 +++-- utils/yaml.go | 1 - 13 files changed, 93 insertions(+), 35 deletions(-) rename app.go => GroupManager.go (91%) create mode 100644 GroupManager.yml diff --git a/app.go b/GroupManager.go similarity index 91% rename from app.go rename to GroupManager.go index 4e4f8109..c1d3257f 100644 --- a/app.go +++ b/GroupManager.go @@ -26,12 +26,12 @@ func main() { func init() { fmt.Println(` ====================[GroupManager]==================== -* Mirai + ZeroBot + Golang +* OneBot + ZeroBot + Golang * Copyright © 2018-2020 Kanri, All Rights Reserved * Project: https://github.com/Yiwen-Chan/GroupManager ======================================================= `) - Conf = utils.Load("./data/config.yml") + Conf = utils.Load("./GroupManager.yml") m.Conf = Conf fmt.Println("[GroupManager] 有需要请按 GitHub 项目上描述的方法修改配置文件") } diff --git a/GroupManager.yml b/GroupManager.yml new file mode 100644 index 00000000..88112879 --- /dev/null +++ b/GroupManager.yml @@ -0,0 +1,7 @@ +插件版本: "1" +监听地址: 127.0.0.1 +监听端口: "2334" +Token: "" +主人QQ: + - "66666666" + - "88888888" diff --git a/go.mod b/go.mod index 8131e6c9..b4b75dcc 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module gm go 1.14 require ( - github.com/wdvxdr1123/ZeroBot v0.0.0-20201129064504-07d9e1b5400f - gopkg.in/yaml.v2 v2.4.0 + github.com/wdvxdr1123/ZeroBot v0.0.0-20201209121757-2a04edb62bac gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 ) diff --git a/go.sum b/go.sum index f7cef805..de39f835 100644 --- a/go.sum +++ b/go.sum @@ -26,10 +26,12 @@ github.com/tidwall/match v1.0.1 h1:PnKP62LPNxHKTwvHHZZzdOAOCtsJTjo6dZLCwpKm5xc= github.com/tidwall/match v1.0.1/go.mod h1:LujAq0jyVjBy028G1WhWfIzbpQfMO8bBZ6Tyb0+pL9E= github.com/tidwall/pretty v1.0.2 h1:Z7S3cePv9Jwm1KwS0513MRaoUe3S01WPbLNV40pwWZU= github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/wdvxdr1123/ZeroBot v0.0.0-20201129064504-07d9e1b5400f h1:06qEGANaKnXdJShXGEbD70F77C7AQAXA0nkQVdyORHc= -github.com/wdvxdr1123/ZeroBot v0.0.0-20201129064504-07d9e1b5400f/go.mod h1:e92qGONnOry8XSfaUUlG7OhT9gyD839P8oZ2wfPe60w= +github.com/wdvxdr1123/ZeroBot v0.0.0-20201209121757-2a04edb62bac h1:foT1gSWW3Ovkecyqoircrp2kP5pajSTUawwom9GLSlM= +github.com/wdvxdr1123/ZeroBot v0.0.0-20201209121757-2a04edb62bac/go.mod h1:e92qGONnOry8XSfaUUlG7OhT9gyD839P8oZ2wfPe60w= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201029080932-201ba4db2418 h1:HlFl4V6pEMziuLXyRkm5BIYq1y1GAbb02pRlWvI54OM= golang.org/x/sys v0.0.0-20201029080932-201ba4db2418/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= \ No newline at end of file +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/modules/main.go b/modules/main.go index 6491dc03..bbc5cefb 100644 --- a/modules/main.go +++ b/modules/main.go @@ -1,5 +1,50 @@ package modules -import "gm/utils" +import ( + "fmt" + "gm/utils" + + zero "github.com/wdvxdr1123/ZeroBot" +) var Conf = &utils.YamlConfig{} + +func init() { + zero.RegisterPlugin(menu{}) +} + +type menu struct{} + +func (menu) GetPluginInfo() zero.PluginInfo { // 返回插件信息 + return zero.PluginInfo{ + Author: "kanri", + PluginName: "menu", + Version: "0.0.1", + Details: "菜单", + } +} + +func (menu) Start() { // 插件主体 + gmmenu := zero.OnRegex("^群管系统$"). + Handle( + func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { + menuText := `====群管==== +- 禁言@QQ 1 +- 解除禁言 @QQ +- 我要自闭 1分钟 +- 开启全员禁言 +- 解除全员禁言 +- 升为管理@QQ +- 取消管理@QQ +- 修改名片@QQ XXX +- 修改头衔@QQ XXX +- 申请头衔 XXX +- 群聊转发 1234 XXX +- 私聊转发 0000 XXX` + zero.Send(event, fmt.Sprintf("%v", menuText)) + return zero.SuccessResponse + }, + ) + gmmenu.Priority = 60 + gmmenu.Block = true +} diff --git a/modules/manage.go b/modules/manage.go index 6532368e..ba846a5c 100644 --- a/modules/manage.go +++ b/modules/manage.go @@ -15,7 +15,7 @@ func (manage) GetPluginInfo() zero.PluginInfo { // 返回插件信息 Author: "kanri", PluginName: "manage", Version: "0.0.1", - Details: "设置群名片群头衔", + Details: "管理任命 踢出退出群聊", } } @@ -24,7 +24,8 @@ func (manage) Start() { // 插件主体 Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupAdmin(event.GroupID, GetInt(state, 1), true) - zero.Send(event, "恭喜~") + nickname := GetNickname(event.GroupID, GetInt(state, 1)) + zero.Send(event, nickname+" 升为了管理~") return zero.SuccessResponse }, ) @@ -35,7 +36,8 @@ func (manage) Start() { // 插件主体 Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupAdmin(event.GroupID, GetInt(state, 1), false) - zero.Send(event, "残念~") + nickname := GetNickname(event.GroupID, GetInt(state, 1)) + zero.Send(event, "残念~ "+nickname+" 暂时失去了管理员的资格") return zero.SuccessResponse }, ) @@ -46,7 +48,8 @@ func (manage) Start() { // 插件主体 Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupKick(event.GroupID, GetInt(state, 1), false) - zero.Send(event, "残念~") + nickname := GetNickname(event.GroupID, GetInt(state, 1)) + zero.Send(event, "残念~ "+nickname+"("+GetStr(state, 1)+") 被放逐") return zero.SuccessResponse }, ) @@ -56,8 +59,8 @@ func (manage) Start() { // 插件主体 leave := zero.OnRegex("^退出群聊.*?(\\d+)", zero.OnlyGroup, zero.AdminPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { - zero.SetGroupLeave(event.GroupID, true) - zero.Send(event, "明白了!") + zero.SetGroupLeave(GetInt(state, 1), true) + zero.Send(event, "姬气人已主动离开群聊 "+GetStr(state, 1)) return zero.SuccessResponse }, ) diff --git a/modules/mute.go b/modules/mute.go index f265636e..b4a6a4b1 100644 --- a/modules/mute.go +++ b/modules/mute.go @@ -20,22 +20,22 @@ func (mute) GetPluginInfo() zero.PluginInfo { // 返回插件信息 } func (mute) Start() { // 插件主体 - unWholeBan := zero.OnRegex("^解除全体禁言$", zero.OnlyGroup, zero.AdminPermission). + unWholeBan := zero.OnRegex("^解除全员禁言$", zero.OnlyGroup, zero.AdminPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupWholeBan(event.GroupID, false) - zero.Send(event, "小黑屋收留成功~") + zero.Send(event, "全员自闭结束~") return zero.SuccessResponse }, ) unWholeBan.Priority = 1 unWholeBan.Block = true - wholeBan := zero.OnRegex("^开启全体禁言$", zero.OnlyGroup, zero.AdminPermission). + wholeBan := zero.OnRegex("^开启全员禁言$", zero.OnlyGroup, zero.AdminPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupWholeBan(event.GroupID, true) - zero.Send(event, "小黑屋收留成功~") + zero.Send(event, "全员自闭开始~") return zero.SuccessResponse }, ) @@ -56,7 +56,7 @@ func (mute) Start() { // 插件主体 ban := zero.OnRegex("^禁言.*?(\\d+).*?\\s(\\d+)", zero.OnlyGroup, zero.AdminPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { - zero.SetGroupBan(event.GroupID, GetInt(state, 1), GetInt(state, 2)*1000) + zero.SetGroupBan(event.GroupID, GetInt(state, 1), GetInt(state, 2)*60) zero.Send(event, "小黑屋收留成功~") return zero.SuccessResponse }, @@ -64,10 +64,10 @@ func (mute) Start() { // 插件主体 ban.Priority = 4 ban.Block = true - selfBan := zero.OnRegex("^我要自闭.*?(\\d+)分钟", zero.OnlyGroup, zero.AdminPermission). + selfBan := zero.OnRegex("^我要自闭.*?(\\d+)分钟", zero.OnlyGroup). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { - zero.SetGroupBan(event.GroupID, event.UserID, GetInt(state, 1)*1000) + zero.SetGroupBan(event.GroupID, event.UserID, GetInt(state, 1)*60) zero.Send(event, "那我就不手下留情了") return zero.SuccessResponse }, diff --git a/modules/notice.go b/modules/notice.go index 52d48e20..66d78d0d 100644 --- a/modules/notice.go +++ b/modules/notice.go @@ -17,7 +17,7 @@ func (notice) GetPluginInfo() zero.PluginInfo { // 返回插件信息 Author: "kanri", PluginName: "notice", Version: "0.0.1", - Details: "设置群名片群头衔", + Details: "进群退群提醒 戳一戳", } } diff --git a/modules/request.go b/modules/request.go index a4b17af9..d2f4b6dd 100644 --- a/modules/request.go +++ b/modules/request.go @@ -17,7 +17,7 @@ func (request) GetPluginInfo() zero.PluginInfo { // 返回插件信息 Author: "kanri", PluginName: "request", Version: "0.0.1", - Details: "设置群名片群头衔", + Details: "申请添加好友 加入群聊 邀请群聊", } } @@ -37,11 +37,12 @@ func (request) Start() { // 插件主体 groupAdd := zero.OnNotice(). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { - if event.RequestType == "friend" { + if event.RequestType == "group" { + nickname := GetNickname(event.GroupID, event.UserID) if event.SubType == "add" { - zero.Send(event, "有人申请加群") + zero.Send(event, nickname+"("+utils.Int2Str(event.UserID)+") 申请加群") } else { - zero.SendPrivateMessage(utils.Str2Int(Conf.Master[0]), "有人想拉我入群") + zero.SendPrivateMessage(utils.Str2Int(Conf.Master[0]), nickname+"("+utils.Int2Str(event.UserID)+") 邀请我加入群 "+utils.Int2Str(event.GroupID)) } } return zero.SuccessResponse diff --git a/modules/sender.go b/modules/sender.go index 9268e7fb..f61a6d5a 100644 --- a/modules/sender.go +++ b/modules/sender.go @@ -15,27 +15,27 @@ func (sender) GetPluginInfo() zero.PluginInfo { // 返回插件信息 Author: "kanri", PluginName: "sender", Version: "0.0.1", - Details: "设置群名片群头衔", + Details: "转发信息", } } func (sender) Start() { // 插件主体 - promoteManager := zero.OnRegex("^群聊转发.*?(\\d+)\\s(.*)", zero.OnlyGroup, zero.AdminPermission). + promoteManager := zero.OnRegex("^群聊转发.*?(\\d+)\\s(.*)", zero.SuperUserPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SendGroupMessage(GetInt(state, 1), GetStr(state, 2)) - zero.Send(event, "complete!") + zero.Send(event, "📧 --> "+GetStr(state, 1)) return zero.SuccessResponse }, ) promoteManager.Priority = 30 promoteManager.Block = true - cancleManager := zero.OnRegex("^私聊转发.*?(\\d+)\\s(.*)", zero.OnlyGroup, zero.AdminPermission). + cancleManager := zero.OnRegex("^私聊转发.*?(\\d+)\\s(.*)", zero.SuperUserPermission). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SendPrivateMessage(GetInt(state, 1), GetStr(state, 2)) - zero.Send(event, "complete!") + zero.Send(event, "📧 --> "+GetStr(state, 1)) return zero.SuccessResponse }, ) diff --git a/modules/title.go b/modules/title.go index 1c7eed70..47b1d236 100644 --- a/modules/title.go +++ b/modules/title.go @@ -42,7 +42,7 @@ func (title) Start() { // 插件主体 setTitle.Priority = 11 setTitle.Block = true - setSelfTitle := zero.OnRegex("^申请头衔(.*)"). + setSelfTitle := zero.OnRegex("^申请头衔(.*)", zero.OnlyGroup). Handle( func(matcher *zero.Matcher, event zero.Event, state zero.State) zero.Response { zero.SetGroupSpecialTitle(event.GroupID, event.UserID, GetStr(state, 2)) diff --git a/modules/utils.go b/modules/utils.go index 57530c3c..b01e1347 100644 --- a/modules/utils.go +++ b/modules/utils.go @@ -1,17 +1,19 @@ package modules import ( - "fmt" "gm/utils" zero "github.com/wdvxdr1123/ZeroBot" ) func GetInt(state zero.State, index int64) int64 { - fmt.Println(state["regex_matched"].([]string)) return utils.Str2Int(state["regex_matched"].([]string)[index]) } func GetStr(state zero.State, index int64) string { return state["regex_matched"].([]string)[index] } + +func GetNickname(groupID int64, userID int64) string { + return zero.GetGroupMemberInfo(groupID, userID, false).Get("nickname").Str +} diff --git a/utils/yaml.go b/utils/yaml.go index e1fd4712..58df5677 100644 --- a/utils/yaml.go +++ b/utils/yaml.go @@ -32,7 +32,6 @@ func DefaultConfig() *YamlConfig { func Load(p string) *YamlConfig { if !PathExists(p) { - CreatePath(p) DefaultConfig().Save(p) } c := YamlConfig{}