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", "")