This commit is contained in:
cdle
2021-09-17 19:25:45 +08:00
parent a0098a771e
commit 0ddb88de04
4 changed files with 44 additions and 30 deletions
+11 -4
View File
@@ -1,5 +1,7 @@
package im package im
import "time"
type Sender interface { type Sender interface {
GetUserID() int GetUserID() int
GetChatID() int GetChatID() int
@@ -17,8 +19,9 @@ type Sender interface {
GetContent() string GetContent() string
IsAdmin() bool IsAdmin() bool
IsMedia() bool IsMedia() bool
Reply(interface{}) error Reply(...interface{}) error
RecallGroupMessage() error Delete() error
Disappear(lifetime ...time.Duration)
} }
type Config struct { type Config struct {
@@ -97,10 +100,14 @@ func (sender *Faker) IsMedia() bool {
return false return false
} }
func (sender *Faker) Reply(msg interface{}) error { func (sender *Faker) Reply(msgs ...interface{}) error {
return nil return nil
} }
func (sender *Faker) RecallGroupMessage() error { func (sender *Faker) Delete() error {
return nil return nil
} }
func (sender *Faker) Disappear(lifetime ...time.Duration) {
}
+4
View File
@@ -224,3 +224,7 @@ func init() {
bot.SendGroupMessage(int64(i), &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: int64(j)}, &message.TextElement{Content: s}}}) bot.SendGroupMessage(int64(i), &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: int64(j)}, &message.TextElement{Content: s}}})
} }
} }
func (sender *Sender) Temporary() {
}
+8 -2
View File
@@ -6,6 +6,7 @@ import (
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"strings" "strings"
"time"
"github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/MiraiGo/message"
"github.com/Mrs4s/go-cqhttp/coolq" "github.com/Mrs4s/go-cqhttp/coolq"
@@ -138,7 +139,8 @@ func (sender *Sender) IsMedia() bool {
return false return false
} }
func (sender *Sender) Reply(msg interface{}) error { func (sender *Sender) Reply(msgs ...interface{}) error {
msg := msgs[0]
if sender.chat != nil { if sender.chat != nil {
sender.chat.Push(msg) sender.chat.Push(msg)
return nil return nil
@@ -182,7 +184,7 @@ func (sender *Sender) Reply(msg interface{}) error {
return nil return nil
} }
func (sender *Sender) RecallGroupMessage() error { func (sender *Sender) Delete() error {
switch sender.Message.(type) { switch sender.Message.(type) {
case *message.GroupMessage: case *message.GroupMessage:
sender.chat = &core.Chat{ sender.chat = &core.Chat{
@@ -197,3 +199,7 @@ func (sender *Sender) RecallGroupMessage() error {
} }
return nil return nil
} }
func (sender *Sender) Disappear(lifetime ...time.Duration) {
}
+18 -21
View File
@@ -14,7 +14,7 @@ import (
type Sender struct { type Sender struct {
Message *tb.Message Message *tb.Message
matches [][]string matches [][]string
chat *core.Chat Duration *time.Duration
} }
var tg = core.NewBucket("tg") var tg = core.NewBucket("tg")
@@ -130,11 +130,9 @@ func (sender *Sender) IsMedia() bool {
return false return false
} }
func (sender *Sender) Reply(rt interface{}) error { func (sender *Sender) Reply(msgs ...interface{}) error {
if sender.chat != nil { msg := msgs[0]
sender.chat.Push(rt) var rt *tb.Message
return nil
}
var r tb.Recipient var r tb.Recipient
var options = []interface{}{} var options = []interface{}{}
if !sender.Message.FromGroup() { if !sender.Message.FromGroup() {
@@ -144,31 +142,30 @@ func (sender *Sender) Reply(rt interface{}) error {
options = []interface{}{&tb.SendOptions{ReplyTo: sender.Message}} options = []interface{}{&tb.SendOptions{ReplyTo: sender.Message}}
} }
var err error var err error
switch rt.(type) { switch msg.(type) {
case error: case error:
_, err = b.Send(r, fmt.Sprintf("%v", rt), options...) rt, err = b.Send(r, fmt.Sprintf("%v", msg), options...)
case []byte: case []byte:
_, err = b.Send(r, string(rt.([]byte)), options...) rt, err = b.Send(r, string(msg.([]byte)), options...)
case string: case string:
_, err = b.Send(r, rt.(string), options...) rt, err = b.Send(r, msg.(string), options...)
case *http.Response: case *http.Response:
_, err = b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(rt.(*http.Response).Body)}}, options...) _, err = b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(msg.(*http.Response).Body)}}, options...)
} }
if err != nil { if err != nil {
sender.Reply(err) sender.Reply(err)
}
if rt != nil {
} }
return err return err
} }
func (sender *Sender) RecallGroupMessage() error { func (sender *Sender) Delete() error {
cid := sender.GetChatID() msg := *sender.Message
if cid == 0 { return b.Delete(&msg)
return nil
} }
sender.chat = &core.Chat{
Class: sender.GetImType(), func (sender *Sender) Disappear(lifetime ...time.Duration) {
ID: sender.GetChatID(),
UserID: sender.GetUserID(),
}
return b.Delete(sender.Message)
} }