x
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
### 安装
|
### 安装
|
||||||
|
|
||||||
在 [releases](https://github.com/cdle/sillyplus/releases) 中找到合适自己系统版本的程序运行带 `-t` 可以开启终端机器人,直接与程序进行交互。
|
在 [releases](https://github.com/cdle/sillyGirl/releases) 中找到合适自己系统版本的程序运行带 `-t` 可以开启终端机器人,直接与程序进行交互。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
./sillyplus -t
|
./sillyplus -t
|
||||||
|
|||||||
+7
-7
@@ -416,13 +416,13 @@ func initPlugin(data string, uuid string) (*common.Function, error) {
|
|||||||
var running func() bool
|
var running func() bool
|
||||||
f := &common.Function{
|
f := &common.Function{
|
||||||
Handle: func(s common.Sender) interface{} {
|
Handle: func(s common.Sender) interface{} {
|
||||||
// defer func() {
|
defer func() {
|
||||||
// err := recover()
|
err := recover()
|
||||||
// if err != nil {
|
if err != nil {
|
||||||
// console.Error("脚本错误:", err)
|
console.Error("脚本错误:", err)
|
||||||
// s.Reply(fmt.Sprint(err))
|
s.Reply(fmt.Sprint(err))
|
||||||
// }
|
}
|
||||||
// }()
|
}()
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
panic(err2)
|
panic(err2)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -502,6 +505,53 @@ func (sender *Strings) Split(s string, sep string, n int) []string {
|
|||||||
return strings.SplitN(s, sep, n)
|
return strings.SplitN(s, sep, n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sender *Strings) EncodeQueryString(params map[string]interface{}) string {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
for key, value := range params {
|
||||||
|
if buf.Len() > 0 {
|
||||||
|
buf.WriteByte('&')
|
||||||
|
}
|
||||||
|
buf.WriteString(url.QueryEscape(key))
|
||||||
|
buf.WriteByte('=')
|
||||||
|
switch v := value.(type) {
|
||||||
|
case string:
|
||||||
|
buf.WriteString(url.QueryEscape(v))
|
||||||
|
case int:
|
||||||
|
buf.WriteString(strconv.Itoa(v))
|
||||||
|
case int64:
|
||||||
|
buf.WriteString(strconv.Itoa(int(v)))
|
||||||
|
case int32:
|
||||||
|
buf.WriteString(strconv.Itoa(int(v)))
|
||||||
|
case bool:
|
||||||
|
buf.WriteString(strconv.FormatBool(v))
|
||||||
|
default:
|
||||||
|
buf.WriteString(url.QueryEscape(fmt.Sprintf("%v", v)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sender *Strings) DecodeQueryString(querystring string) map[string]interface{} {
|
||||||
|
values, err := url.ParseQuery(querystring)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
params := make(map[string]interface{})
|
||||||
|
for key, values := range values {
|
||||||
|
if len(values) > 0 {
|
||||||
|
value := values[0]
|
||||||
|
if intValue, err := strconv.Atoi(value); err == nil {
|
||||||
|
params[key] = intValue
|
||||||
|
} else if boolValue, err := strconv.ParseBool(value); err == nil {
|
||||||
|
params[key] = boolValue
|
||||||
|
} else {
|
||||||
|
params[key] = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return params
|
||||||
|
}
|
||||||
|
|
||||||
type Fmt struct {
|
type Fmt struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user