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()