Files
Sillyv2/core/test.go
T
2021-09-18 15:34:21 +08:00

140 lines
2.8 KiB
Go

package core
import (
"errors"
"io/ioutil"
"strings"
"github.com/cdle/sillyGirl/im"
)
func initSys() {
AddCommand("", []Function{
{
Rules: []string{"raw ^name$"},
Handle: func(s im.Sender) interface{} {
s.Disappear()
return name()
},
},
{
Rules: []string{"raw ^升级$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
s.Disappear()
s.Reply(name() + "开始检查核心功能。")
update := false
record := func(b bool) {
if !update && b {
update = true
}
}
need, err := GitPull("")
if err != nil {
return err
}
if !need {
record(need)
s.Reply(name() + "核心功能已是最新。")
}
files, _ := ioutil.ReadDir(ExecPath + "/develop")
for _, f := range files {
if f.IsDir() {
need, err := GitPull("/develop/" + f.Name())
if err != nil {
s.Reply(name() + "扩展" + f.Name() + "更新错误" + err.Error() + "。")
}
if !need {
s.Reply(name() + "扩展" + f.Name() + "已是最新。")
} else {
record(need)
s.Reply(name() + "扩展" + f.Name() + "发现更新。")
}
}
}
if !update {
return name() + "没有更新。"
}
s.Reply(name() + "正在编译程序。")
if err := CompileCode(); err != nil {
return err
}
s.Reply(name() + "编译程序完毕。")
Daemon()
return nil
},
},
{
Rules: []string{"raw ^重启$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
s.Disappear()
Daemon()
return nil
},
},
{
Rules: []string{"raw ^命令$"},
Handle: func(s im.Sender) interface{} {
s.Disappear()
ss := []string{}
for _, f := range functions {
ss = append(ss, strings.Join(f.Rules, " "))
}
return strings.Join(ss, "\n")
},
},
{
Admin: true,
Rules: []string{"set ? ? ?"},
Handle: func(s im.Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {
return errors.New("不存在的存储桶")
}
b.Set(s.Get(1), s.Get(2))
return "设置成功"
},
},
{
Admin: true,
Rules: []string{"delete ? ?"},
Handle: func(s im.Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {
return errors.New("不存在的存储桶")
}
b.Set(s.Get(1), "")
return "删除成功"
},
},
{
Admin: true,
Rules: []string{"get ? ?"},
Handle: func(s im.Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {
return errors.New("不存在的存储桶")
}
v := b.Get(s.Get(1))
if v == "" {
return errors.New("空值")
}
return v
},
},
})
}
func IsBucket(b Bucket) bool {
for i := range Buckets {
if Buckets[i] == b {
return true
}
}
return false
}