update
This commit is contained in:
+59
-23
@@ -20,34 +20,37 @@ func init() {
|
|||||||
logs.Warn("打开文件夹%s错误,%v", ExecPath+"/develop/replies", err)
|
logs.Warn("打开文件夹%s错误,%v", ExecPath+"/develop/replies", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, v := range files {
|
var o = NewBucket("otto")
|
||||||
if v.IsDir() {
|
get := func(call otto.FunctionCall) (result otto.Value) {
|
||||||
continue
|
key := call.Argument(0).String()
|
||||||
|
value := call.Argument(1).String()
|
||||||
|
result, _ = otto.ToValue(o.Get(key, value))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
jr := string(ExecPath + "/develop/replies/" + v.Name())
|
set := func(call otto.FunctionCall) interface{} {
|
||||||
data := ""
|
key := call.Argument(0).String()
|
||||||
if strings.Contains(jr, "http") {
|
value := call.Argument(1).String()
|
||||||
data, err = httplib.Get(jr).String()
|
o.Set(key, value)
|
||||||
if err != nil {
|
return otto.Value{}
|
||||||
logs.Warn("回复:%s获取失败%v", jr, err)
|
}
|
||||||
continue
|
sendMessage := func(call otto.Value) interface{} {
|
||||||
|
imType, _ := call.Object().Get("imType")
|
||||||
|
groupCode, _ := call.Object().Get("groupCode")
|
||||||
|
userID, _ := call.Object().Get("userID")
|
||||||
|
message, _ := call.Object().Get("message")
|
||||||
|
gid, _ := groupCode.ToInteger()
|
||||||
|
if gid != 0 {
|
||||||
|
if push, ok := GroupPushs[imType.String()]; ok {
|
||||||
|
uid, _ := userID.ToInteger()
|
||||||
|
push(int(gid), int(uid), message.String())
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
f, err := os.Open(jr)
|
if push, ok := Pushs[imType.String()]; ok {
|
||||||
if err != nil {
|
uid, _ := userID.ToInteger()
|
||||||
logs.Warn("回复:%s打开失败%v", jr, err)
|
push(int(uid), message.String())
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
v, _ := ioutil.ReadAll(f)
|
|
||||||
data = string(v)
|
|
||||||
}
|
}
|
||||||
rules := []string{}
|
return otto.Value{}
|
||||||
for _, v := range regexp.MustCompile(`\[rule:\s*([^\s\[\]]+)\s*\]`).FindAllStringSubmatch(data, -1) {
|
|
||||||
rules = append(rules, v[1])
|
|
||||||
}
|
|
||||||
if len(rules) == 0 {
|
|
||||||
logs.Warn("回复:%s找不到规则", jr, err)
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
request := func(call otto.Value) interface{} {
|
request := func(call otto.Value) interface{} {
|
||||||
url := ""
|
url := ""
|
||||||
@@ -94,13 +97,46 @@ func init() {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
for _, v := range files {
|
||||||
|
if v.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
jr := string(ExecPath + "/develop/replies/" + v.Name())
|
||||||
|
data := ""
|
||||||
|
if strings.Contains(jr, "http") {
|
||||||
|
data, err = httplib.Get(jr).String()
|
||||||
|
if err != nil {
|
||||||
|
logs.Warn("回复:%s获取失败%v", jr, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
f, err := os.Open(jr)
|
||||||
|
if err != nil {
|
||||||
|
logs.Warn("回复:%s打开失败%v", jr, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
v, _ := ioutil.ReadAll(f)
|
||||||
|
data = string(v)
|
||||||
|
}
|
||||||
|
rules := []string{}
|
||||||
|
for _, v := range regexp.MustCompile(`\[rule:\s*([^\s\[\]]+)\s*\]`).FindAllStringSubmatch(data, -1) {
|
||||||
|
rules = append(rules, v[1])
|
||||||
|
}
|
||||||
|
if len(rules) == 0 {
|
||||||
|
logs.Warn("回复:%s找不到规则", jr, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
var handler = func(s Sender) interface{} {
|
var handler = func(s Sender) interface{} {
|
||||||
template := data
|
template := data
|
||||||
for k, v := range s.GetMatch() {
|
for k, v := range s.GetMatch() {
|
||||||
template = strings.Replace(template, fmt.Sprintf(`param(%d)`, k+1), fmt.Sprintf(`"%s"`, v), -1)
|
template = strings.Replace(template, fmt.Sprintf(`param(%d)`, k+1), fmt.Sprintf(`"%s"`, v), -1)
|
||||||
}
|
}
|
||||||
vm := otto.New()
|
vm := otto.New()
|
||||||
|
vm.Set("set", set)
|
||||||
|
vm.Set("get", get)
|
||||||
vm.Set("request", request)
|
vm.Set("request", request)
|
||||||
|
vm.Set("sendGroupMessage", sendMessage)
|
||||||
vm.Set("sendText", func(call otto.Value) interface{} {
|
vm.Set("sendText", func(call otto.Value) interface{} {
|
||||||
s.Reply(call.String())
|
s.Reply(call.String())
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user