From 0cf8a740658c4d2bbdf7e4bc601dbed227701e37 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Sat, 18 Sep 2021 16:51:59 +0800 Subject: [PATCH] update --- core/im.go | 2 ++ core/test.go | 1 - im/qq/sender.go | 9 ++++++--- im/tg/tg.go | 19 ++++++++++++++++--- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/core/im.go b/core/im.go index 8c49e8f..6d0e324 100644 --- a/core/im.go +++ b/core/im.go @@ -26,6 +26,8 @@ type Sender interface { Disappear(lifetime ...time.Duration) } +type Edit string + type Faker struct { Message interface{} matches [][]string diff --git a/core/test.go b/core/test.go index 0c86289..e841fee 100644 --- a/core/test.go +++ b/core/test.go @@ -44,7 +44,6 @@ func initSys() { Rules: []string{"raw ^升级$"}, Admin: true, Handle: func(s Sender) interface{} { - s.Disappear() s.Reply(name() + "开始检查核心功能。") update := false record := func(b bool) { diff --git a/im/qq/sender.go b/im/qq/sender.go index ce52cc0..ca45b02 100644 --- a/im/qq/sender.go +++ b/im/qq/sender.go @@ -151,9 +151,12 @@ func (sender *Sender) IsMedia() bool { func (sender *Sender) Reply(msgs ...interface{}) error { msg := msgs[0] - if len(msgs) > 1 { - du := msgs[1].(time.Duration) - sender.Duration = &du + for _, item := range msgs { + switch item.(type) { + case time.Duration: + du := msgs[1].(time.Duration) + sender.Duration = &du + } } switch sender.Message.(type) { case *message.PrivateMessage: diff --git a/im/tg/tg.go b/im/tg/tg.go index b41eb1f..3b37578 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -16,6 +16,7 @@ type Sender struct { matches [][]string Duration *time.Duration deleted bool + reply *tb.Message } var tg = core.NewBucket("tg") @@ -135,9 +136,16 @@ func (sender *Sender) IsMedia() bool { func (sender *Sender) Reply(msgs ...interface{}) error { msg := msgs[0] - if len(msgs) > 1 { - du := msgs[1].(time.Duration) - sender.Duration = &du + var edit *core.Edit + for _, item := range msgs { + switch item.(type) { + case core.Edit: + v := msgs[2].(core.Edit) + edit = &v + case time.Duration: + du := msgs[1].(time.Duration) + sender.Duration = &du + } } var rt *tb.Message var r tb.Recipient @@ -157,6 +165,10 @@ func (sender *Sender) Reply(msgs ...interface{}) error { case []byte: rt, err = b.Send(r, string(msg.([]byte)), options...) case string: + if edit != nil && sender.reply != nil { + b.Edit(sender.reply, msg.(string)) + return nil + } rt, err = b.Send(r, msg.(string), options...) case *http.Response: _, err = b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(msg.(*http.Response).Body)}}, options...) @@ -176,6 +188,7 @@ func (sender *Sender) Reply(msgs ...interface{}) error { b.Delete(rt) } } + sender.reply = rt return err }