From cac60b4f8d25c619b5a3a148ff916ff65dacdd28 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Thu, 16 Sep 2021 15:52:32 +0800 Subject: [PATCH] update --- core/function.go | 33 +++++++++++++++++---------------- core/store.go | 8 ++++++-- core/test.go | 11 +++++++++++ im/tg/tg.go | 1 + 4 files changed, 35 insertions(+), 18 deletions(-) diff --git a/core/function.go b/core/function.go index 5fda6fe..d937c59 100644 --- a/core/function.go +++ b/core/function.go @@ -23,7 +23,6 @@ type Function struct { FindAll bool Admin bool Handle func(s im.Sender) interface{} - Regex bool Cron string } @@ -91,23 +90,25 @@ func initToHandleMessage() { } func AddCommand(prefix string, cmds []Function) { - for _, cmd := range cmds { - if !cmd.Regex { - for i := range cmd.Rules { - if prefix != "" { - cmd.Rules[i] = prefix + `\s+` + cmd.Rules[i] - } - cmd.Rules[i] = strings.Replace(cmd.Rules[i], "(", `[(]`, -1) - cmd.Rules[i] = strings.Replace(cmd.Rules[i], ")", `[)]`, -1) - cmd.Rules[i] = strings.Replace(cmd.Rules[i], " ", `\s+`, -1) - cmd.Rules[i] = strings.Replace(cmd.Rules[i], "?", `(\S+)`, -1) - cmd.Rules[i] = "^" + cmd.Rules[i] + "$" + for j := range cmds { + for i := range cmds[j].Rules { + if strings.Contains(cmds[j].Rules[i], "raw ") { + cmds[j].Rules[i] = strings.Replace(cmds[j].Rules[i], "raw ", "", -1) + continue } + if prefix != "" { + cmds[j].Rules[i] = prefix + `\s+` + cmds[j].Rules[i] + } + cmds[j].Rules[i] = strings.Replace(cmds[j].Rules[i], "(", `[(]`, -1) + cmds[j].Rules[i] = strings.Replace(cmds[j].Rules[i], ")", `[)]`, -1) + cmds[j].Rules[i] = strings.Replace(cmds[j].Rules[i], " ", `\s+`, -1) + cmds[j].Rules[i] = strings.Replace(cmds[j].Rules[i], "?", `(\S+)`, -1) + cmds[j].Rules[i] = "^" + cmds[j].Rules[i] + "$" } - functions = append(functions, cmd) - if cmd.Cron != "" { - c.AddFunc(cmd.Cron, func() { - cmd.Handle(nil) + functions = append(functions, cmds[j]) + if cmds[j].Cron != "" { + c.AddFunc(cmds[j].Cron, func() { + cmds[j].Handle(nil) }) } } diff --git a/core/store.go b/core/store.go index ed578f4..34b64f3 100644 --- a/core/store.go +++ b/core/store.go @@ -53,7 +53,9 @@ func (bucket Bucket) Get(kv ...string) string { if b == nil { return nil } - value = string(b.Get([]byte(key))) + if v := string(b.Get([]byte(key))); v != "" { + value = v + } return nil }) return value @@ -78,7 +80,9 @@ func (bucket Bucket) GetInt(key string, vs ...int) int { func (bucket Bucket) Foreach(f func(k, v []byte) error) { db.View(func(tx *bolt.Tx) error { b := tx.Bucket([]byte(bucket)) - b.ForEach(f) + if b != nil { + b.ForEach(f) + } return nil }) } diff --git a/core/test.go b/core/test.go index dd0c9bc..f4fd933 100644 --- a/core/test.go +++ b/core/test.go @@ -2,12 +2,23 @@ package core import ( "errors" + "strings" "github.com/cdle/sillyGirl/im" ) func init() { AddCommand("", []Function{ + { + Rules: []string{"raw 命令"}, + Handle: func(_ im.Sender) interface{} { + ss := []string{} + for _, f := range functions { + ss = append(ss, strings.Join(f.Rules, " ")) + } + return strings.Join(ss, "\n") + }, + }, { Admin: true, Rules: []string{"set ? ? ?"}, diff --git a/im/tg/tg.go b/im/tg/tg.go index 72c7b63..65a8b78 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -35,6 +35,7 @@ func init() { Token: token, Poller: &tb.LongPoller{Timeout: 10 * time.Second}, }) + if err != nil { logs.Warn("监听telegram机器人失败:%v", err) return