update
This commit is contained in:
+17
-16
@@ -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)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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 ? ? ?"},
|
||||
|
||||
@@ -35,6 +35,7 @@ func init() {
|
||||
Token: token,
|
||||
Poller: &tb.LongPoller{Timeout: 10 * time.Second},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
logs.Warn("监听telegram机器人失败:%v", err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user