mirror of
https://github.com/FloatTech/ZeroBot-Plugin.git
synced 2025-12-23 01:05:06 +08:00
82 lines
1.5 KiB
Go
82 lines
1.5 KiB
Go
package antiabuse
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
sqlite "github.com/FloatTech/sqlite"
|
|
)
|
|
|
|
var db = &sqlite.Sqlite{}
|
|
|
|
type banUser struct {
|
|
UUID string `db:"uuid"`
|
|
DueTime int64 `db:"due_time"`
|
|
}
|
|
|
|
func insertUser(gid, uid int64) error {
|
|
obj := &banUser{fmt.Sprintf("%d-%d", gid, uid), time.Now().Add(4 * time.Hour).UnixNano()}
|
|
return db.Insert("banUser", obj)
|
|
}
|
|
|
|
func deleteUser(gid, uid int64) error {
|
|
sql := fmt.Sprintf("WHERE uuid=%d-%d", gid, uid)
|
|
return db.Del("banUser", sql)
|
|
}
|
|
|
|
func recoverUser() error {
|
|
if !db.CanFind("banUser", "") {
|
|
return nil
|
|
}
|
|
obj := &banUser{}
|
|
var uuids []string
|
|
err := db.FindFor("banUser", obj, "", func() error {
|
|
if time.Now().UnixNano() < obj.DueTime {
|
|
uuids = append(uuids, obj.UUID)
|
|
} else {
|
|
if err := db.Del("banUser", "WHERE uuid="+obj.UUID); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
},
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
banSet.AddMany(uuids)
|
|
return nil
|
|
}
|
|
|
|
type banWord struct {
|
|
GroupWord string `db:"group_word"`
|
|
}
|
|
|
|
func insertWord(gid int64, word string) error {
|
|
obj := &banWord{fmt.Sprintf("%d-%s", gid, word)}
|
|
return db.Insert("banWord", obj)
|
|
}
|
|
|
|
func deleteWord(gid int64, word string) error {
|
|
sql := fmt.Sprintf("WHERE group_word = %d-%s", gid, word)
|
|
return db.Del("banWord", sql)
|
|
}
|
|
|
|
func recoverWord() error {
|
|
if !db.CanFind("banWord", "") {
|
|
return nil
|
|
}
|
|
obj := &banWord{}
|
|
var groupWords []string
|
|
err := db.FindFor("banWord", obj, "", func() error {
|
|
groupWords = append(groupWords, obj.GroupWord)
|
|
return nil
|
|
},
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
wordSet.AddMany(groupWords)
|
|
return nil
|
|
}
|