mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
46 lines
782 B
Go
46 lines
782 B
Go
package filter
|
|
|
|
import (
|
|
"os"
|
|
"sync"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/tidwall/gjson"
|
|
)
|
|
|
|
var (
|
|
filters = make(map[string]Filter)
|
|
filterMutex sync.RWMutex
|
|
)
|
|
|
|
// Add adds a filter to the list of filters
|
|
func Add(file string) {
|
|
if file == "" {
|
|
return
|
|
}
|
|
bs, err := os.ReadFile(file)
|
|
if err != nil {
|
|
logrus.Error("init filter error: ", err)
|
|
return
|
|
}
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
logrus.Error("init filter error: ", err)
|
|
}
|
|
}()
|
|
filter := Generate("and", gjson.ParseBytes(bs))
|
|
filterMutex.Lock()
|
|
filters[file] = filter
|
|
filterMutex.Unlock()
|
|
}
|
|
|
|
// Find returns the filter for the given file
|
|
func Find(file string) Filter {
|
|
if file == "" {
|
|
return nil
|
|
}
|
|
filterMutex.RLock()
|
|
defer filterMutex.RUnlock()
|
|
return filters[file]
|
|
}
|