x
This commit is contained in:
+7
-7
@@ -67,13 +67,13 @@ var BotsLocker sync.RWMutex
|
||||
var ErrNotFind = errors.New("adapter not find")
|
||||
|
||||
func DestroyAdapterByUUID(uuid string) {
|
||||
BotsLocker.RLock()
|
||||
defer BotsLocker.RUnlock()
|
||||
for i := range Bots {
|
||||
if Bots[i].uuid == uuid {
|
||||
go Bots[i].Destroy()
|
||||
}
|
||||
}
|
||||
// BotsLocker.RLock()
|
||||
// defer BotsLocker.RUnlock()
|
||||
// for i := range Bots {
|
||||
// if Bots[i].uuid == uuid {
|
||||
// go Bots[i].Destroy()
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
func GetAdapter(botplt string, bots_id ...string) (*Factory, error) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/cdle/sillyplus/emoji"
|
||||
"github.com/cdle/sillyplus/utils"
|
||||
)
|
||||
|
||||
type Strings struct {
|
||||
@@ -201,3 +202,7 @@ func (sender *Strings) ReplaceToEmojis(str string, pattern string) string {
|
||||
func (sender *Strings) ExtractAddress(input string) string {
|
||||
return regexp.MustCompile(`http[s]?://[\w.]+:?\d*`).FindString(input)
|
||||
}
|
||||
|
||||
func (sender *Strings) Unique(str ...interface{}) []string {
|
||||
return utils.Unique(str...)
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func publicScript(str string) string {
|
||||
if su.GetValue("title") == "" {
|
||||
su.SetValue("title", "无名脚本")
|
||||
}
|
||||
if su.GetValue("message") == "" {
|
||||
if su.GetValue("message") != "" {
|
||||
su.DeleteValue("message")
|
||||
}
|
||||
create_at := su.GetValue("create_at")
|
||||
|
||||
+65
-7
@@ -308,24 +308,82 @@ func IsZeroOrEmpty(str string) bool {
|
||||
return str == "0" || str == "" || str == "nil"
|
||||
}
|
||||
|
||||
// func Unique(strs ...interface{}) []string {
|
||||
// m := make(map[string]bool)
|
||||
// var result []string
|
||||
// for _, arg := range strs {
|
||||
// switch arg := arg.(type) {
|
||||
// case []string:
|
||||
// for _, v := range arg {
|
||||
// if _, ok := m[v]; !ok {
|
||||
// m[v] = true
|
||||
// result = append(result, v)
|
||||
// }
|
||||
// }
|
||||
// case string:
|
||||
// if _, ok := m[arg]; !ok {
|
||||
// m[arg] = true
|
||||
// result = append(result, arg)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return result
|
||||
// }
|
||||
|
||||
func Unique(strs ...interface{}) []string {
|
||||
m := make(map[string]bool)
|
||||
var result []string
|
||||
for _, arg := range strs {
|
||||
var toAppend []string
|
||||
switch arg := arg.(type) {
|
||||
case []string:
|
||||
for _, v := range arg {
|
||||
if _, ok := m[v]; !ok {
|
||||
m[v] = true
|
||||
result = append(result, v)
|
||||
if !contains(result, v) && !contains(toAppend, v) {
|
||||
toAppend = append(toAppend, v)
|
||||
}
|
||||
}
|
||||
case []interface{}:
|
||||
for _, v := range arg {
|
||||
if !contains(result, v.(string)) && !contains(toAppend, v.(string)) {
|
||||
toAppend = append(toAppend, v.(string))
|
||||
}
|
||||
}
|
||||
case string:
|
||||
if _, ok := m[arg]; !ok {
|
||||
m[arg] = true
|
||||
result = append(result, arg)
|
||||
if !contains(result, arg) {
|
||||
toAppend = append(toAppend, arg)
|
||||
}
|
||||
case [][]string:
|
||||
subResult := Unique(flatten(arg)...)
|
||||
for _, v := range subResult {
|
||||
if !contains(result, v) && !contains(toAppend, v) {
|
||||
toAppend = append(toAppend, v)
|
||||
}
|
||||
}
|
||||
default:
|
||||
// Unsupported type
|
||||
continue
|
||||
}
|
||||
result = append(result, toAppend...)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func contains(strs []string, s string) bool {
|
||||
for _, v := range strs {
|
||||
if v == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func flatten(arr [][]string) []interface{} {
|
||||
var result []interface{}
|
||||
for _, subarr := range arr {
|
||||
var subresult []interface{}
|
||||
for _, v := range subarr {
|
||||
subresult = append(subresult, v)
|
||||
}
|
||||
result = append(result, subresult)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user