mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
51 lines
782 B
Go
51 lines
782 B
Go
package global
|
|
|
|
import (
|
|
"github.com/tidwall/gjson"
|
|
"strings"
|
|
)
|
|
|
|
var trueSet = map[string]struct{}{
|
|
"true": {},
|
|
"yes": {},
|
|
"1": {},
|
|
}
|
|
|
|
var falseSet = map[string]struct{}{
|
|
"false": {},
|
|
"no": {},
|
|
"0": {},
|
|
}
|
|
|
|
func EnsureBool(p interface{}, defaultVal bool) bool {
|
|
var str string
|
|
if b, ok := p.(bool); ok {
|
|
return b
|
|
}
|
|
if j, ok := p.(gjson.Result); ok {
|
|
if !j.Exists() {
|
|
return defaultVal
|
|
}
|
|
if j.Type == gjson.True {
|
|
return true
|
|
}
|
|
if j.Type == gjson.False {
|
|
return false
|
|
}
|
|
if j.Type != gjson.String {
|
|
return defaultVal
|
|
}
|
|
str = j.Str
|
|
} else if s, ok := p.(string); ok {
|
|
str = s
|
|
}
|
|
str = strings.ToLower(str)
|
|
if _, ok := trueSet[str]; ok {
|
|
return true
|
|
}
|
|
if _, ok := falseSet[str]; ok {
|
|
return false
|
|
}
|
|
return defaultVal
|
|
}
|