This commit is contained in:
cdle
2021-09-18 16:33:50 +08:00
parent 5fcb62b3fc
commit eb57ad0def
7 changed files with 36 additions and 52 deletions
-2
View File
@@ -8,12 +8,10 @@ import (
"github.com/astaxie/beego/logs"
"github.com/beego/beego/v2/adapter/httplib"
"github.com/cdle/sillyGirl/im"
"gopkg.in/yaml.v2"
)
type Yaml struct {
Im []im.Config
Replies []Reply
}
+5 -6
View File
@@ -6,7 +6,6 @@ import (
"strings"
"github.com/beego/beego/v2/adapter/logs"
"github.com/cdle/sillyGirl/im"
cron "github.com/robfig/cron/v3"
)
@@ -21,7 +20,7 @@ type Function struct {
Rules []string
FindAll bool
Admin bool
Handle func(s im.Sender) interface{}
Handle func(s Sender) interface{}
Cron string
}
@@ -33,10 +32,10 @@ var name = func() string {
var functions = []Function{}
var Senders chan im.Sender
var Senders chan Sender
func initToHandleMessage() {
Senders = make(chan im.Sender)
Senders = make(chan Sender)
go func() {
for {
go handleMessage(<-Senders)
@@ -63,7 +62,7 @@ func AddCommand(prefix string, cmds []Function) {
functions = append(functions, cmds[j])
if cmds[j].Cron != "" {
if _, err := c.AddFunc(cmds[j].Cron, func() {
cmds[j].Handle(&im.Faker{})
cmds[j].Handle(&Faker{})
}); err != nil {
logs.Warn("任务%v添加失败%v", cmds[j].Rules[0], err)
} else {
@@ -73,7 +72,7 @@ func AddCommand(prefix string, cmds []Function) {
}
}
func handleMessage(sender im.Sender) {
func handleMessage(sender Sender) {
for _, function := range functions {
for _, rule := range function.Rules {
var matched bool
+107
View File
@@ -0,0 +1,107 @@
package core
import (
"time"
)
type Sender interface {
GetUserID() int
GetChatID() int
GetImType() string
GetMessageID() int
GetUsername() string
IsReply() bool
GetReplySenderUserID() int
GetRawMessage() interface{}
SetMatch([]string)
SetAllMatch([][]string)
GetMatch() []string
GetAllMatch() [][]string
Get(...int) string
GetContent() string
IsAdmin() bool
IsMedia() bool
Reply(...interface{}) error
Delete() error
Disappear(lifetime ...time.Duration)
}
type Faker struct {
Message interface{}
matches [][]string
}
func (sender *Faker) GetContent() string {
return ""
}
func (sender *Faker) GetUserID() int {
return 0
}
func (sender *Faker) GetChatID() int {
return 0
}
func (sender *Faker) GetImType() string {
return ""
}
func (sender *Faker) GetMessageID() int {
return 0
}
func (sender *Faker) GetUsername() string {
return ""
}
func (sender *Faker) IsReply() bool {
return false
}
func (sender *Faker) GetReplySenderUserID() int {
return 0
}
func (sender *Faker) GetRawMessage() interface{} {
return nil
}
func (sender *Faker) SetMatch(ss []string) {
}
func (sender *Faker) SetAllMatch(ss [][]string) {
}
func (sender *Faker) GetMatch() []string {
return nil
}
func (sender *Faker) GetAllMatch() [][]string {
return nil
}
func (sender *Faker) Get(index ...int) string {
return ""
}
func (sender *Faker) IsAdmin() bool {
return true
}
func (sender *Faker) IsMedia() bool {
return false
}
func (sender *Faker) Reply(msgs ...interface{}) error {
return nil
}
func (sender *Faker) Delete() error {
return nil
}
func (sender *Faker) Disappear(lifetime ...time.Duration) {
}
+3 -4
View File
@@ -7,7 +7,6 @@ import (
"github.com/beego/beego/v2/adapter/httplib"
"github.com/buger/jsonparser"
"github.com/cdle/sillyGirl/im"
)
type Reply struct {
@@ -27,13 +26,13 @@ type Reply struct {
func InitReplies() {
for _, v := range Config.Replies {
reply := v
var handler func(s im.Sender) interface{}
var handler func(s Sender) interface{}
if reply.Type != "url" {
handler = func(s im.Sender) interface{} {
handler = func(s Sender) interface{} {
return reply.Content
}
}
handler = func(s im.Sender) interface{} {
handler = func(s Sender) interface{} {
url := reply.Request.Url
body := reply.Request.Body
for k, v := range s.GetMatch() {
+7 -9
View File
@@ -6,8 +6,6 @@ import (
"io/ioutil"
"strings"
"time"
"github.com/cdle/sillyGirl/im"
)
func init() {
@@ -37,7 +35,7 @@ func initSys() {
AddCommand("", []Function{
{
Rules: []string{"raw ^name$"},
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
return name()
},
@@ -45,7 +43,7 @@ func initSys() {
{
Rules: []string{"raw ^升级$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
s.Reply(name() + "开始检查核心功能。")
update := false
@@ -95,7 +93,7 @@ func initSys() {
{
Rules: []string{"raw ^重启$"},
Admin: true,
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
sillyGirl.Set("rebootInfo", fmt.Sprintf("%v %v %v", s.GetImType(), s.GetChatID(), s.GetUserID()))
Daemon()
@@ -104,7 +102,7 @@ func initSys() {
},
{
Rules: []string{"raw ^命令$"},
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
ss := []string{}
for _, f := range functions {
@@ -116,7 +114,7 @@ func initSys() {
{
Admin: true,
Rules: []string{"set ? ? ?"},
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {
@@ -129,7 +127,7 @@ func initSys() {
{
Admin: true,
Rules: []string{"delete ? ?"},
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {
@@ -142,7 +140,7 @@ func initSys() {
{
Admin: true,
Rules: []string{"get ? ?"},
Handle: func(s im.Sender) interface{} {
Handle: func(s Sender) interface{} {
s.Disappear()
b := Bucket(s.Get(0))
if !IsBucket(b) {