From a004ed806466225949a5839e9d523fa6cb9cbb19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 6 Sep 2022 20:00:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/antiabuse/anti.go | 6 +----- plugin/antiabuse/db.go | 7 +++++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/plugin/antiabuse/anti.go b/plugin/antiabuse/anti.go index 62ac4bb0..0a5ac2c8 100644 --- a/plugin/antiabuse/anti.go +++ b/plugin/antiabuse/anti.go @@ -2,7 +2,6 @@ package antiabuse import ( - "strconv" "strings" "time" @@ -61,14 +60,11 @@ func init() { } uid := ctx.Event.UserID gid := ctx.Event.GroupID - grp := strconv.FormatInt(gid, 36) msg := strings.ReplaceAll(ctx.MessageString(), "\n", "") msg = strings.ReplaceAll(msg, "\r", "") msg = strings.ReplaceAll(msg, "\t", "") msg = strings.ReplaceAll(msg, ";", "") - db.RLock() - defer db.RUnlock() - if db.CanFind(grp, "WHERE instr('"+msg+"', word)>=0") { + if db.isInAntiList(uid, gid, msg) { if err := ctx.State["manager"].(*ctrl.Control[*zero.Ctx]).Manager.DoBlock(uid); err == nil { cache.Set(uid, struct{}{}) ctx.SetGroupBan(gid, uid, 4*3600) diff --git a/plugin/antiabuse/db.go b/plugin/antiabuse/db.go index 13261809..09af2a67 100644 --- a/plugin/antiabuse/db.go +++ b/plugin/antiabuse/db.go @@ -20,6 +20,13 @@ type banWord struct { var nilban = &banWord{} +func (db *antidb) isInAntiList(uid, gid int64, msg string) bool { + grp := strconv.FormatInt(gid, 36) + db.RLock() + defer db.RUnlock() + return db.CanFind(grp, "WHERE instr('"+msg+"', word)>=0") +} + func (db *antidb) insertWord(gid int64, word string) error { grp := strconv.FormatInt(gid, 36) db.Lock()