diff --git a/.gitignore b/.gitignore index ced3e4a..e38f734 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ dwz replies qinglongs sets.conf -yawx \ No newline at end of file +yawx +xyo \ No newline at end of file diff --git a/core/im.go b/core/im.go index 61723f5..0085bbd 100644 --- a/core/im.go +++ b/core/im.go @@ -43,9 +43,9 @@ type ImagePath string type Faker struct { Message string - matches [][]string Type string UserID interface{} + BaseSender } func (sender *Faker) GetContent() string { @@ -87,35 +87,6 @@ func (sender *Faker) GetRawMessage() interface{} { return sender.Message } -func (sender *Faker) SetMatch(ss []string) { - sender.matches = [][]string{ss} -} -func (sender *Faker) SetAllMatch(ss [][]string) { - sender.matches = ss -} - -func (sender *Faker) GetMatch() []string { - return sender.matches[0] -} - -func (sender *Faker) GetAllMatch() [][]string { - return sender.matches -} - -func (sender *Faker) Get(index ...int) string { - i := 0 - if len(index) != 0 { - i = index[0] - } - if len(sender.matches) == 0 { - return "" - } - if len(sender.matches[0]) < i+1 { - return "" - } - return sender.matches[0][i] -} - func (sender *Faker) IsAdmin() bool { return true } @@ -156,10 +127,72 @@ func (sender *Faker) Finish() { } -func (sender *Faker) Continue() { +type BaseSender struct { + matches [][]string + goon bool +} + +func (sender *BaseSender) SetMatch(ss []string) { + sender.matches = [][]string{ss} +} +func (sender *BaseSender) SetAllMatch(ss [][]string) { + sender.matches = ss +} + +func (sender *BaseSender) GetMatch() []string { + return sender.matches[0] +} + +func (sender *BaseSender) GetAllMatch() [][]string { + return sender.matches +} + +func (sender *BaseSender) Continue() { + sender.goon = true +} + +func (sender *BaseSender) IsContinue() bool { + return sender.goon +} + +func (sender *BaseSender) Get(index ...int) string { + i := 0 + if len(index) != 0 { + i = index[0] + } + if len(sender.matches) == 0 { + return "" + } + if len(sender.matches[0]) < i+1 { + return "" + } + return sender.matches[0][i] +} + +func (sender *BaseSender) Delete() error { + return nil +} + +func (sender *BaseSender) Disappear(lifetime ...time.Duration) { } -func (sender *Faker) IsContinue() bool { - return true +func (sender *BaseSender) Finish() { + +} + +func (sender *BaseSender) IsMedia() bool { + return false +} + +func (sender *BaseSender) GetRawMessage() interface{} { + return nil +} + +func (sender *BaseSender) IsReply() bool { + return false +} + +func (sender *BaseSender) GetMessageID() int { + return 0 } diff --git a/im/qq/sender.go b/im/qq/sender.go index 4622702..6e6bbdb 100644 --- a/im/qq/sender.go +++ b/im/qq/sender.go @@ -17,7 +17,7 @@ type Sender struct { matches [][]string Duration *time.Duration deleted bool - goon bool + core.BaseSender } func (sender *Sender) GetContent() string { @@ -91,35 +91,6 @@ func (sender *Sender) GetRawMessage() interface{} { return sender.Message } -func (sender *Sender) SetMatch(ss []string) { - sender.matches = [][]string{ss} -} -func (sender *Sender) SetAllMatch(ss [][]string) { - sender.matches = ss -} - -func (sender *Sender) GetMatch() []string { - return sender.matches[0] -} - -func (sender *Sender) GetAllMatch() [][]string { - return sender.matches -} - -func (sender *Sender) Get(index ...int) string { - i := 0 - if len(index) != 0 { - i = index[0] - } - if len(sender.matches) == 0 { - return "" - } - if len(sender.matches[0]) < i+1 { - return "" - } - return sender.matches[0][i] -} - func (sender *Sender) IsAdmin() bool { var sid int64 = 0 switch sender.Message.(type) { @@ -295,11 +266,3 @@ func (sender *Sender) GetUsername() string { } return "" } - -func (sender *Sender) Continue() { - sender.goon = true -} - -func (sender *Sender) IsContinue() bool { - return sender.goon -} diff --git a/im/tg/tg.go b/im/tg/tg.go index 4991ef8..0c1fcf0 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -15,11 +15,10 @@ import ( type Sender struct { Message *tb.Message - matches [][]string Duration *time.Duration deleted bool reply *tb.Message - goon bool + core.BaseSender } var tg = core.NewBucket("tg") @@ -185,36 +184,6 @@ func (sender *Sender) GetRawMessage() interface{} { return sender.Message } -func (sender *Sender) SetMatch(ss []string) { - sender.matches = [][]string{ss} -} -func (sender *Sender) SetAllMatch(ss [][]string) { - sender.matches = ss -} - -func (sender *Sender) GetMatch() []string { - return sender.matches[0] -} - -func (sender *Sender) GetAllMatch() [][]string { - return sender.matches -} - -func (sender *Sender) Get(index ...int) string { - - i := 0 - if len(index) != 0 { - i = index[0] - } - if len(sender.matches) == 0 { - return "" - } - if len(sender.matches[0]) < i+1 { - return "" - } - return sender.matches[0][i] -} - func (sender *Sender) IsAdmin() bool { return strings.Contains(tg.Get("masters"), fmt.Sprint(sender.Message.Sender.ID)) @@ -347,11 +316,3 @@ func (sender *Sender) Disappear(lifetime ...time.Duration) { func (sender *Sender) Finish() { } - -func (sender *Sender) Continue() { - sender.goon = true -} - -func (sender *Sender) IsContinue() bool { - return sender.goon -} diff --git a/im/wxmp/init.go b/im/wxmp/init.go index fd98615..5de9ea4 100644 --- a/im/wxmp/init.go +++ b/im/wxmp/init.go @@ -106,11 +106,10 @@ func init() { type Sender struct { Message string - matches [][]string Responses []interface{} Wait chan []interface{} uid int - goon bool + core.BaseSender } func (sender *Sender) GetContent() string { @@ -149,35 +148,6 @@ func (sender *Sender) GetRawMessage() interface{} { return sender.Message } -func (sender *Sender) SetMatch(ss []string) { - sender.matches = [][]string{ss} -} -func (sender *Sender) SetAllMatch(ss [][]string) { - sender.matches = ss -} - -func (sender *Sender) GetMatch() []string { - return sender.matches[0] -} - -func (sender *Sender) GetAllMatch() [][]string { - return sender.matches -} - -func (sender *Sender) Get(index ...int) string { - i := 0 - if len(index) != 0 { - i = index[0] - } - if len(sender.matches) == 0 { - return "" - } - if len(sender.matches[0]) < i+1 { - return "" - } - return sender.matches[0][i] -} - func (sender *Sender) IsAdmin() bool { return strings.Contains(wxmp.Get("masters"), fmt.Sprint(sender.uid)) } @@ -205,11 +175,3 @@ func (sender *Sender) Finish() { } sender.Wait <- sender.Responses } - -func (sender *Sender) Continue() { - sender.goon = true -} - -func (sender *Sender) IsContinue() bool { - return sender.goon -}