From c549f6fa77c40fe35508fb9f986b0f8959bc134e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E9=A5=AD?= <1156544355@qq.com> Date: Mon, 21 Jul 2025 21:51:46 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E2=9C=A8=20=E6=B7=BB=E5=8A=A0=E8=BF=9D?= =?UTF-8?q?=E7=A6=81=E8=AF=8D=E8=A7=A3=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++++++ plugin/antiabuse/anti.go | 18 ++++++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 988beba65b..1442aad6ff 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,18 @@ zerobot [-h] [-m] [-n nickname] [-t token] [-u url] [-g url] [-p prefix] [-d|w] - [x] 早安 | 晚安 + +
+ 违禁词检测 + + `import _ "github.com/FloatTech/ZeroBot-Plugin/plugin/antiabuse" + ` + - [x] 添加违禁词 + + - [x] 删除违禁词 + + - [x] 查看违禁词 +
ATRI diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index b4ba459f68..0d4e2c38dc 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -17,7 +17,7 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" ) -const bandur time.Duration = time.Minute * 10 +const bandur time.Duration = time.Minute * 2 var ( managers *ctrl.Manager[*zero.Ctx] // managers lazy load @@ -41,7 +41,7 @@ func init() { engine := control.AutoRegister(&ctrl.Options[*zero.Ctx]{ DisableOnDefault: false, Brief: "违禁词检测", - Help: "- /[添加|删除|查看]违禁词", + Help: "- [添加|删除|查看]违禁词", PrivateDataFolder: "anti_abuse", }) @@ -57,9 +57,6 @@ func init() { }) engine.OnMessage(onceRule, zero.OnlyGroup, func(ctx *zero.Ctx) bool { - if !ctx.Event.IsToMe { - return true - } uid := ctx.Event.UserID gid := ctx.Event.GroupID msg := strings.ReplaceAll(ctx.MessageString(), "\n", "") @@ -71,6 +68,7 @@ func init() { t := time.Now().Unix() cache.Set(uid, struct{}{}) ctx.SetThisGroupBan(uid, int64(bandur.Minutes())) + ctx.DeleteMessage(ctx.Event.MessageID) ctx.SendChain(message.Text("检测到违禁词, 已封禁/屏蔽", bandur)) db.Lock() defer db.Unlock() @@ -92,9 +90,9 @@ func init() { return true }) - engine.OnCommand("添加违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( + engine.OnPrefix("添加违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( func(ctx *zero.Ctx) { - args := ctx.State["args"].(string) + args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.insertWord(ctx.Event.GroupID, args); err != nil { ctx.SendChain(message.Text("ERROR: ", err)) } else { @@ -102,9 +100,9 @@ func init() { } }) - engine.OnCommand("删除违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( + engine.OnPrefix("删除违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( func(ctx *zero.Ctx) { - args := ctx.State["args"].(string) + args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.deleteWord(ctx.Event.GroupID, args); err != nil { ctx.SendChain(message.Text("ERROR: ", err)) } else { @@ -112,7 +110,7 @@ func init() { } }) - engine.OnCommand("查看违禁词", zero.OnlyGroup, onceRule).Handle( + engine.OnPrefix("查看违禁词", zero.OnlyGroup, onceRule).Handle( func(ctx *zero.Ctx) { b, err := text.RenderToBase64(db.listWords(ctx.Event.GroupID), text.FontFile, 400, 20) if err != nil { From 8247d658362824531c73ea43c8bfc45bb6cc70a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E9=A5=AD?= <1156544355@qq.com> Date: Mon, 21 Jul 2025 22:37:31 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=F0=9F=90=9B=20=E6=97=B6=E9=97=B4=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/antiabuse/anti.go | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index 0d4e2c38dc..aa81e4de2b 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -17,7 +17,12 @@ import ( "github.com/wdvxdr1123/ZeroBot/message" ) -const bandur time.Duration = time.Minute * 2 +const ( + bandur time.Duration = time.Minute * 2 + add = "添加违禁词" + delete = "删除违禁词" + list = "查看违禁词" +) var ( managers *ctrl.Manager[*zero.Ctx] // managers lazy load @@ -56,7 +61,14 @@ func init() { return true }) - engine.OnMessage(onceRule, zero.OnlyGroup, func(ctx *zero.Ctx) bool { + notAntiabuse := func(ctx *zero.Ctx) bool { + if zero.PrefixRule(add)(ctx) || zero.PrefixRule(delete)(ctx) || zero.PrefixRule(list)(ctx) { + return false + } + return true + } + + engine.OnMessage(notAntiabuse, zero.OnlyGroup, func(ctx *zero.Ctx) bool { uid := ctx.Event.UserID gid := ctx.Event.GroupID msg := strings.ReplaceAll(ctx.MessageString(), "\n", "") @@ -67,7 +79,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.SetThisGroupBan(uid, int64(bandur.Minutes())) + ctx.SetThisGroupBan(uid, int64(bandur.Seconds())) ctx.DeleteMessage(ctx.Event.MessageID) ctx.SendChain(message.Text("检测到违禁词, 已封禁/屏蔽", bandur)) db.Lock() @@ -90,7 +102,7 @@ func init() { return true }) - engine.OnPrefix("添加违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( + engine.OnPrefix("添加违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.insertWord(ctx.Event.GroupID, args); err != nil { @@ -100,7 +112,7 @@ func init() { } }) - engine.OnPrefix("删除违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).Handle( + engine.OnPrefix("删除违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.deleteWord(ctx.Event.GroupID, args); err != nil { @@ -110,7 +122,7 @@ func init() { } }) - engine.OnPrefix("查看违禁词", zero.OnlyGroup, onceRule).Handle( + engine.OnPrefix("查看违禁词", zero.OnlyGroup, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { b, err := text.RenderToBase64(db.listWords(ctx.Event.GroupID), text.FontFile, 400, 20) if err != nil { From 60f4e4a228db725c62f552578ed9fcb0b5293162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E9=A5=AD?= <1156544355@qq.com> Date: Tue, 22 Jul 2025 22:28:56 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=8E=A8=20=E5=8E=BB=E6=8E=89=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/antiabuse/anti.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index aa81e4de2b..c2ebbe7de4 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -102,7 +102,7 @@ func init() { return true }) - engine.OnPrefix("添加违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( + engine.OnPrefix(add, zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.insertWord(ctx.Event.GroupID, args); err != nil { @@ -112,7 +112,7 @@ func init() { } }) - engine.OnPrefix("删除违禁词", zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( + engine.OnPrefix(delete, zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.deleteWord(ctx.Event.GroupID, args); err != nil { @@ -122,7 +122,7 @@ func init() { } }) - engine.OnPrefix("查看违禁词", zero.OnlyGroup, onceRule).SetBlock(true).Handle( + engine.OnPrefix(list, zero.OnlyGroup, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { b, err := text.RenderToBase64(db.listWords(ctx.Event.GroupID), text.FontFile, 400, 20) if err != nil { From 43b5ddd81c7364e1797cf33fd6eb3818a48bdb1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E9=A5=AD?= <1156544355@qq.com> Date: Tue, 22 Jul 2025 22:34:27 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=F0=9F=90=9B=20=E6=9B=BF=E6=8D=A2=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/antiabuse/anti.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index c2ebbe7de4..753968aff5 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -20,7 +20,7 @@ import ( const ( bandur time.Duration = time.Minute * 2 add = "添加违禁词" - delete = "删除违禁词" + del = "删除违禁词" list = "查看违禁词" ) @@ -62,7 +62,7 @@ func init() { }) notAntiabuse := func(ctx *zero.Ctx) bool { - if zero.PrefixRule(add)(ctx) || zero.PrefixRule(delete)(ctx) || zero.PrefixRule(list)(ctx) { + if zero.PrefixRule(add)(ctx) || zero.PrefixRule(del)(ctx) || zero.PrefixRule(list)(ctx) { return false } return true @@ -112,7 +112,7 @@ func init() { } }) - engine.OnPrefix(delete, zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( + engine.OnPrefix(del, zero.OnlyGroup, zero.AdminPermission, onceRule).SetBlock(true).Handle( func(ctx *zero.Ctx) { args := strings.TrimSpace(ctx.State["args"].(string)) if err := db.deleteWord(ctx.Event.GroupID, args); err != nil { From b1553228d0d811431099040c48be8d323fac80ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=94=85=E9=A5=AD?= <1156544355@qq.com> Date: Wed, 23 Jul 2025 19:52:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=F0=9F=90=9B=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/antiabuse/anti.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index 753968aff5..dfe64fbdff 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -68,7 +68,7 @@ func init() { return true } - engine.OnMessage(notAntiabuse, zero.OnlyGroup, func(ctx *zero.Ctx) bool { + engine.OnMessage(onceRule, notAntiabuse, zero.OnlyGroup, func(ctx *zero.Ctx) bool { uid := ctx.Event.UserID gid := ctx.Event.GroupID msg := strings.ReplaceAll(ctx.MessageString(), "\n", "")