diff --git a/README.md b/README.md index b60444472e..22eb93929e 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ [![go](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin?style=flat-square&logo=go)](https://goreportcard.com/badge/github.com/FloatTech/ZeroBot-Plugin) [![onebot](https://img.shields.io/badge/onebot-v11-black?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAABwCAMAAADxPgR5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAxQTFRF////29vbr6+vAAAAk1hCcwAAAAR0Uk5T////AEAqqfQAAAKcSURBVHja7NrbctswDATQXfD//zlpO7FlmwAWIOnOtNaTM5JwDMa8E+PNFz7g3waJ24fviyDPgfhz8fHP39cBcBL9KoJbQUxjA2iYqHL3FAnvzhL4GtVNUcoSZe6eSHizBcK5LL7dBr2AUZlev1ARRHCljzRALIEog6H3U6bCIyqIZdAT0eBuJYaGiJaHSjmkYIZd+qSGWAQnIaz2OArVnX6vrItQvbhZJtVGB5qX9wKqCMkb9W7aexfCO/rwQRBzsDIsYx4AOz0nhAtWu7bqkEQBO0Pr+Ftjt5fFCUEbm0Sbgdu8WSgJ5NgH2iu46R/o1UcBXJsFusWF/QUaz3RwJMEgngfaGGdSxJkE/Yg4lOBryBiMwvAhZrVMUUvwqU7F05b5WLaUIN4M4hRocQQRnEedgsn7TZB3UCpRrIJwQfqvGwsg18EnI2uSVNC8t+0QmMXogvbPg/xk+Mnw/6kW/rraUlvqgmFreAA09xW5t0AFlHrQZ3CsgvZm0FbHNKyBmheBKIF2cCA8A600aHPmFtRB1XvMsJAiza7LpPog0UJwccKdzw8rdf8MyN2ePYF896LC5hTzdZqxb6VNXInaupARLDNBWgI8spq4T0Qb5H4vWfPmHo8OyB1ito+AysNNz0oglj1U955sjUN9d41LnrX2D/u7eRwxyOaOpfyevCWbTgDEoilsOnu7zsKhjRCsnD/QzhdkYLBLXjiK4f3UWmcx2M7PO21CKVTH84638NTplt6JIQH0ZwCNuiWAfvuLhdrcOYPVO9eW3A67l7hZtgaY9GZo9AFc6cryjoeFBIWeU+npnk/nLE0OxCHL1eQsc1IciehjpJv5mqCsjeopaH6r15/MrxNnVhu7tmcslay2gO2Z1QfcfX0JMACG41/u0RrI9QAAAABJRU5ErkJggg==)](https://t.me/zerobotplugin) - [![zerobot](https://img.shields.io/badge/zerobot-v1.6.11-black?style=flat-square&logo=go)](https://github.com/wdvxdr1123/ZeroBot) + [![zerobot](https://img.shields.io/badge/zerobot-v1.7.2-black?style=flat-square&logo=go)](https://github.com/wdvxdr1123/ZeroBot) [![license](https://img.shields.io/github/license/FloatTech/ZeroBot-Plugin.svg?style=flat-square&logo=gnu)](https://raw.githubusercontent.com/FloatTech/ZeroBot-Plugin/master/LICENSE) [![tencent-qq](https://img.shields.io/badge/group-1048452984-red?style=flat-square&logo=tencent-qq)](https://jq.qq.com/?_wv=1027&k=QMb7x1mM) [![telegram](https://img.shields.io/badge/Telegram-click%20me-informational?style=flat-square&logo=telegram)](https://t.me/zerobotplugin) @@ -42,9 +42,10 @@ ## 命令行参数 > `[]`代表是可选参数 ```bash -zerobot [-h] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] [-c|s config.json] [-l latency] [-r ringlen] [-x max process time] [qq1 qq2 qq3 ...] [&] +zerobot [-h] [-m] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] [-c|s config.json] [-l latency] [-r ringlen] [-x max process time] [qq1 qq2 qq3 ...] [&] ``` - **-h**: 显示帮助 +- **-m**: 不自动标记消息为已读 - **-n nickname**: 设置默认昵称,默认为`椛椛` - **-t token**: 设置`AccessToken`,默认为空 - **-u url**: 设置`Url`,默认为`ws://127.0.0.1:6700` @@ -62,27 +63,17 @@ zerobot [-h] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] [-c|s 默认配置文件格式如下。当选择从配置文件加载时,将忽略相应命令行参数。 ```json { - "zero": { - "nickname": [ - "椛椛", - "ATRI", - "atri", - "亚托莉", - "アトリ" - ], - "command_prefix": "/", - "super_users": [], - "ring_len": 4096, - "latency": 233000000, - "max_process_time": 240000000000 - }, - "ws": [ - { - "Url": "ws://127.0.0.1:6700", - "AccessToken": "" - } - ], - "wss": null + "zero": { + "nickname": ["椛椛", "ATRI", "atri", "亚托莉", "アトリ"], + "command_prefix": "/", + "super_users": [], + "ring_len": 4096, + "latency": 233000000, + "max_process_time": 240000000000, + "mark_message": true + }, + "ws": [{ "Url": "ws://127.0.0.1:6700", "AccessToken": "" }], + "wss": null } ``` diff --git a/data b/data index d0342c3806..9cab8a7bae 160000 --- a/data +++ b/data @@ -1 +1 @@ -Subproject commit d0342c38067c5cc34880bcaf0bab6e88fb5d242e +Subproject commit 9cab8a7bae5d076e7440475750cd0b54f19fe558 diff --git a/go.mod b/go.mod index 9a97821267..4dc632f0a7 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/FloatTech/sqlite v1.6.2 github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b github.com/FloatTech/zbpctrl v1.5.3-0.20230514154630-b74e6fcca380 - github.com/FloatTech/zbputils v1.6.2-0.20230514154857-9363fdb11fd6 + github.com/FloatTech/zbputils v1.6.2-0.20230728055141-bf0c1f30e617 github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5 github.com/antchfx/htmlquery v1.2.5 @@ -37,7 +37,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/tidwall/gjson v1.14.4 github.com/wcharczuk/go-chart/v2 v2.1.0 - github.com/wdvxdr1123/ZeroBot v1.6.11 + github.com/wdvxdr1123/ZeroBot v1.7.2 gitlab.com/gomidi/midi/v2 v2.0.25 golang.org/x/image v0.3.0 golang.org/x/sys v0.4.0 diff --git a/go.sum b/go.sum index 9673680be8..73e73577cb 100644 --- a/go.sum +++ b/go.sum @@ -18,8 +18,8 @@ github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b h1:tvciXWq2nuvTbFeJG github.com/FloatTech/ttl v0.0.0-20220715042055-15612be72f5b/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/FloatTech/zbpctrl v1.5.3-0.20230514154630-b74e6fcca380 h1:qmwoT8xVaND01aCdwy+5/j6z490nehQWZAVyTBN8ahU= github.com/FloatTech/zbpctrl v1.5.3-0.20230514154630-b74e6fcca380/go.mod h1:gkGC1C1eEUd/Ld/ja68zas5j2ZktIZCdnj2FMaM+Au0= -github.com/FloatTech/zbputils v1.6.2-0.20230514154857-9363fdb11fd6 h1:uss0/IszBjik7LSM5Q4xQ9FaDXAC7vK7y1dAaOj4UAk= -github.com/FloatTech/zbputils v1.6.2-0.20230514154857-9363fdb11fd6/go.mod h1:JXRQf2GAzpd7gp853LP6PU3O4pkRoFFuKGykcBChPNk= +github.com/FloatTech/zbputils v1.6.2-0.20230728055141-bf0c1f30e617 h1:9qDcXB3ILqncMUBVqCXe6dLjNUIYCIMo5kcQHfCAXEU= +github.com/FloatTech/zbputils v1.6.2-0.20230728055141-bf0c1f30e617/go.mod h1:x99mMbbJrybb0dSKHL20hHutmjWop8CFP0X6Ywn8V78= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e h1:wR3MXQ3VbUlPKOOUwLOYgh/QaJThBTYtsl673O3lqSA= github.com/RomiChan/syncx v0.0.0-20221202055724-5f842c53020e/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= @@ -203,8 +203,8 @@ github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYm github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= github.com/wcharczuk/go-chart/v2 v2.1.0 h1:tY2slqVQ6bN+yHSnDYwZebLQFkphK4WNrVwnt7CJZ2I= github.com/wcharczuk/go-chart/v2 v2.1.0/go.mod h1:yx7MvAVNcP/kN9lKXM/NTce4au4DFN99j6i1OwDclNA= -github.com/wdvxdr1123/ZeroBot v1.6.11 h1:44Wr6CsCtWlFensK5IhuVCWkosdRw0rA8SygVD8DgoI= -github.com/wdvxdr1123/ZeroBot v1.6.11/go.mod h1:y29UIOy0RD3P+0meDNIWRhcJF3jtWPN9xP9hgt/AJAU= +github.com/wdvxdr1123/ZeroBot v1.7.2 h1:aSibGY9X4xXbIF7IAffsf1OqNMIM9WIi1APtFYEVxL0= +github.com/wdvxdr1123/ZeroBot v1.7.2/go.mod h1:y29UIOy0RD3P+0meDNIWRhcJF3jtWPN9xP9hgt/AJAU= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= diff --git a/main.go b/main.go index 54b4c3ce55..15c4f10439 100644 --- a/main.go +++ b/main.go @@ -231,6 +231,7 @@ func init() { late := flag.Uint("l", 233, "Response latency (ms).") rsz := flag.Uint("r", 4096, "Receiving buffer ring size.") maxpt := flag.Uint("x", 4, "Max process time (min).") + markmsg := flag.Bool("m", false, "Don't mark message as read automatically") flag.Parse() @@ -277,7 +278,7 @@ func init() { config.Z.Driver[i] = w } for i, s := range config.S { - config.Z.Driver[i+len(config.W)] = driver.NewWebSocketServer(16, s.Url, s.AccessToken) + config.Z.Driver[i+len(config.W)] = s } logrus.Infoln("[main] 从", *runcfg, "读取配置文件") return @@ -290,6 +291,7 @@ func init() { RingLen: *rsz, Latency: time.Duration(*late) * time.Millisecond, MaxProcessTime: time.Duration(*maxpt) * time.Minute, + MarkMessage: !*markmsg, Driver: []zero.Driver{config.W[0]}, } diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index 9d3d8cc1b6..c9f19bd1a7 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -70,7 +70,7 @@ func init() { if err := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]).Manager.DoBlock(uid); err == nil { t := time.Now().Unix() cache.Set(uid, struct{}{}) - ctx.SetGroupBan(gid, uid, int64(bandur.Minutes())) + ctx.SetThisGroupBan(uid, int64(bandur.Minutes())) ctx.SendChain(message.Text("检测到违禁词, 已封禁/屏蔽", bandur)) db.Lock() defer db.Unlock() diff --git a/plugin/baiduaudit/model.go b/plugin/baiduaudit/model.go index 43fdc99aa8..34b97fc10a 100644 --- a/plugin/baiduaudit/model.go +++ b/plugin/baiduaudit/model.go @@ -68,7 +68,7 @@ func (bdres *baiduRes) audit(ctx *zero.Ctx, configpath string) { bantime = group.BANTime * 60 } // 执行禁言 - ctx.SetGroupBan(ctx.Event.GroupID, ctx.Event.UserID, bantime) + ctx.SetThisGroupBan(ctx.Event.UserID, bantime) } // 查看是否开启撤回提示 if group.DMRemind { diff --git a/plugin/event/event.go b/plugin/event/event.go index 66c538901e..bc1cb508ef 100644 --- a/plugin/event/event.go +++ b/plugin/event/event.go @@ -39,8 +39,8 @@ func init() { userid := ctx.Event.UserID username := ctx.CardOrNickName(userid) data := (storage)(c.GetData(-su)) + groupname := ctx.GetThisGroupInfo(true).Name groupid := ctx.Event.GroupID - groupname := ctx.GetGroupInfo(groupid, true).Name logrus.Info("[event]收到来自[", username, "](", userid, ")的群聊邀请,群:[", groupname, "](", groupid, ")") if data.isinviteon() || (!data.ismasteroff() && zero.SuperUserPermission(ctx)) { ctx.SetGroupAddRequest(ctx.Event.Flag, "invite", true, "") diff --git a/plugin/guessmusic/main.go b/plugin/guessmusic/main.go index e910bc7db6..fa1621bffa 100644 --- a/plugin/guessmusic/main.go +++ b/plugin/guessmusic/main.go @@ -527,7 +527,7 @@ func getlist(pathOfMusic string) (list []listinfo, err error) { // 遍历群文件 func getFileURLbyFileName(ctx *zero.Ctx, fileName string) (fileSearchName, fileURL string) { - filesOfGroup := ctx.GetThisGroupRootFiles(ctx.Event.GroupID) + filesOfGroup := ctx.GetThisGroupRootFiles() files := filesOfGroup.Get("files").Array() folders := filesOfGroup.Get("folders").Array() // 遍历当前目录的文件名 diff --git a/plugin/manager/manager.go b/plugin/manager/manager.go index 17fe0502c7..a159781fb2 100644 --- a/plugin/manager/manager.go +++ b/plugin/manager/manager.go @@ -95,13 +95,11 @@ func init() { // 插件主体 // 升为管理 engine.OnRegex(`^升为管理.*?(\d+)`, zero.OnlyGroup, zero.SuperUserPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupAdmin( - ctx.Event.GroupID, + ctx.SetThisGroupAdmin( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq true, ) - nickname := ctx.GetGroupMemberInfo( // 被升为管理的人的昵称 - ctx.Event.GroupID, + nickname := ctx.GetThisGroupMemberInfo( // 被升为管理的人的昵称 math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被升为管理的人的qq false, ).Get("nickname").Str @@ -110,13 +108,11 @@ func init() { // 插件主体 // 取消管理 engine.OnRegex(`^取消管理.*?(\d+)`, zero.OnlyGroup, zero.SuperUserPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupAdmin( - ctx.Event.GroupID, + ctx.SetThisGroupAdmin( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq false, ) - nickname := ctx.GetGroupMemberInfo( // 被取消管理的人的昵称 - ctx.Event.GroupID, + nickname := ctx.GetThisGroupMemberInfo( // 被取消管理的人的昵称 math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被取消管理的人的qq false, ).Get("nickname").Str @@ -125,13 +121,11 @@ func init() { // 插件主体 // 踢出群聊 engine.OnRegex(`^踢出群聊.*?(\d+)`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupKick( - ctx.Event.GroupID, + ctx.SetThisGroupKick( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq false, ) - nickname := ctx.GetGroupMemberInfo( // 被踢出群聊的人的昵称 - ctx.Event.GroupID, + nickname := ctx.GetThisGroupMemberInfo( // 被踢出群聊的人的昵称 math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被踢出群聊的人的qq false, ).Get("nickname").Str @@ -148,19 +142,13 @@ func init() { // 插件主体 // 开启全体禁言 engine.OnRegex(`^开启全员禁言$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupWholeBan( - ctx.Event.GroupID, - true, - ) + ctx.SetThisGroupWholeBan(true) ctx.SendChain(message.Text("全员自闭开始~")) }) // 解除全员禁言 engine.OnRegex(`^解除全员禁言$`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupWholeBan( - ctx.Event.GroupID, - false, - ) + ctx.SetThisGroupWholeBan(false) ctx.SendChain(message.Text("全员自闭结束~")) }) // 禁言 @@ -180,8 +168,7 @@ func init() { // 插件主体 if duration >= 43200 { duration = 43199 // qq禁言最大时长为一个月 } - ctx.SetGroupBan( - ctx.Event.GroupID, + ctx.SetThisGroupBan( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 要禁言的人的qq duration*60, // 要禁言的时间(分钟) ) @@ -190,8 +177,7 @@ func init() { // 插件主体 // 解除禁言 engine.OnRegex(`^解除禁言.*?(\d+)`, zero.OnlyGroup, zero.AdminPermission).SetBlock(true). Handle(func(ctx *zero.Ctx) { - ctx.SetGroupBan( - ctx.Event.GroupID, + ctx.SetThisGroupBan( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 要解除禁言的人的qq 0, ) @@ -214,8 +200,7 @@ func init() { // 插件主体 if duration >= 43200 { duration = 43199 // qq禁言最大时长为一个月 } - ctx.SetGroupBan( - ctx.Event.GroupID, + ctx.SetThisGroupBan( ctx.Event.UserID, duration*60, // 要自闭的时间(分钟) ) @@ -228,8 +213,7 @@ func init() { // 插件主体 ctx.SendChain(message.Text("名字太长啦!")) return } - ctx.SetGroupCard( - ctx.Event.GroupID, + ctx.SetThisGroupCard( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被修改群名片的人 ctx.State["regex_matched"].([]string)[2], // 修改成的群名片 ) @@ -246,8 +230,7 @@ func init() { // 插件主体 ctx.SendChain(message.Text("头衔太长啦!")) return } - ctx.SetGroupSpecialTitle( - ctx.Event.GroupID, + ctx.SetThisGroupSpecialTitle( math.Str2Int64(ctx.State["regex_matched"].([]string)[1]), // 被修改群头衔的人 sptitle, // 修改成的群头衔 ) @@ -264,8 +247,7 @@ func init() { // 插件主体 ctx.SendChain(message.Text("头衔太长啦!")) return } - ctx.SetGroupSpecialTitle( - ctx.Event.GroupID, + ctx.SetThisGroupSpecialTitle( ctx.Event.UserID, // 被修改群头衔的人 sptitle, // 修改成的群头衔 ) @@ -445,7 +427,7 @@ func init() { // 插件主体 case <-time.After(time.Minute): cancel() ctx.SendChain(message.Text("拜拜啦~")) - ctx.SetGroupKick(ctx.Event.GroupID, uid, false) + ctx.SetThisGroupKick(uid, false) case <-recv: cancel() ctx.SendChain(message.Text("答对啦~")) @@ -594,7 +576,7 @@ func init() { // 插件主体 if ok { ctx.SetGroupAddRequest(ctx.Event.Flag, "add", true, "") process.SleepAbout1sTo2s() - ctx.SetGroupCard(ctx.Event.GroupID, ctx.Event.UserID, ghun) + ctx.SetThisGroupCard(ctx.Event.UserID, ghun) } else { ctx.SetGroupAddRequest(ctx.Event.Flag, "add", false, reason) } @@ -618,7 +600,7 @@ func init() { // 插件主体 } }) engine.OnCommand("精华列表", zero.OnlyGroup, zero.AdminPermission).SetBlock(true).Limit(ctxext.LimitByUser).Handle(func(ctx *zero.Ctx) { - list := ctx.GetGroupEssenceMessageList(ctx.Event.GroupID).Array() + list := ctx.GetThisGroupEssenceMessageList().Array() msg := message.Message{ctxext.FakeSenderForwardNode(ctx, message.Text("本群精华列表:"))} n := len(list) if n > 30 { @@ -675,7 +657,7 @@ func welcometocq(ctx *zero.Ctx, welcome string) string { at := "[CQ:at,qq=" + uid + "]" // at用户 avatar := "[CQ:image,file=" + "http://q4.qlogo.cn/g?b=qq&nk=" + uid + "&s=640]" // 用户头像 gid := strconv.FormatInt(ctx.Event.GroupID, 10) // 群id - groupname := ctx.GetGroupInfo(ctx.Event.GroupID, true).Name // 群名 + groupname := ctx.GetThisGroupInfo(true).Name // 群名 cqstring := strings.ReplaceAll(welcome, "{at}", at) cqstring = strings.ReplaceAll(cqstring, "{nickname}", nickname) cqstring = strings.ReplaceAll(cqstring, "{avatar}", avatar) diff --git a/plugin/wtf/main.go b/plugin/wtf/main.go index b641888bfb..a3290d327d 100644 --- a/plugin/wtf/main.go +++ b/plugin/wtf/main.go @@ -44,7 +44,7 @@ func init() { var secondname string if len(ctx.Event.Message) > 1 && ctx.Event.Message[1].Type == "at" { qq, _ := strconv.ParseInt(ctx.Event.Message[1].Data["qq"], 10, 64) - secondname = ctx.GetGroupMemberInfo(ctx.Event.GroupID, qq, false).Get("nickname").Str + secondname = ctx.GetThisGroupMemberInfo(qq, false).Get("nickname").Str } name = ctx.Event.Sender.NickName var text string