From 4a10a587ed01b5b11e151293fe25e684cbdeb55f Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Tue, 28 Sep 2021 08:11:16 +0800 Subject: [PATCH] update --- core/im.go | 2 ++ core/reply.go | 6 +++--- im/qq/sender.go | 36 +++++++++++++++++++++++++----------- im/tg/tg.go | 16 +++++++++++----- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/core/im.go b/core/im.go index 9d01ea2..fd15fd4 100644 --- a/core/im.go +++ b/core/im.go @@ -35,6 +35,8 @@ var E Edit var R Replace var N Notify +type ImageUrl string + type Faker struct { Message string matches [][]string diff --git a/core/reply.go b/core/reply.go index e12b29b..e45c1bd 100644 --- a/core/reply.go +++ b/core/reply.go @@ -92,14 +92,14 @@ func InitReplies() { s.Reply(err) return nil } - s.Reply(httplib.Get(f).Response()) + s.Reply(ImageUrl(f)) return nil } if reply.Request.Regex != "" { d, _ := ioutil.ReadAll(rsp.Body) res := regexp.MustCompile(reply.Request.Regex).FindStringSubmatch(string(d)) if len(res) != 0 { - s.Reply(httplib.Get(res[1]).Response()) + s.Reply(ImageUrl(res[1])) } return nil } @@ -176,7 +176,7 @@ func InitReplies() { v := re[0] get := strings.Replace(strings.TrimRight(v, ")"), "image(", "", -1) f, _ := jsonparser.GetString(data, strings.Split(get, ".")...) - s.Reply(httplib.Get(f).Response()) + s.Reply(ImageUrl(f)) content = strings.Replace(content, v, "", -1) } content = strings.Replace(content, `[d]`, ",", -1) diff --git a/im/qq/sender.go b/im/qq/sender.go index 162655b..30b3acd 100644 --- a/im/qq/sender.go +++ b/im/qq/sender.go @@ -3,13 +3,12 @@ package qq import ( "bytes" "fmt" - "io/ioutil" - "net/http" "strings" "time" "github.com/Mrs4s/MiraiGo/message" "github.com/Mrs4s/go-cqhttp/coolq" + "github.com/beego/beego/v2/adapter/httplib" "github.com/cdle/sillyGirl/core" ) @@ -167,9 +166,14 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) { content = msg.(string) case []byte: content = string(msg.([]byte)) - case *http.Response: - data, _ := ioutil.ReadAll(msg.(*http.Response).Body) - bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + case core.ImageUrl: + data, err := httplib.Get(string(msg.(core.ImageUrl))).Bytes() + if err != nil { + sender.Reply(err) + return 0, nil + } else { + bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + } } if content != "" { bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&message.TextElement{Content: content}}}) @@ -182,9 +186,14 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) { content = msg.(string) case []byte: content = string(msg.([]byte)) - case *http.Response: - data, _ := ioutil.ReadAll(msg.(*http.Response).Body) - bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + case core.ImageUrl: + data, err := httplib.Get(string(msg.(core.ImageUrl))).Bytes() + if err != nil { + sender.Reply(err) + return 0, nil + } else { + bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + } } if content != "" { bot.SendPrivateMessage(m.Sender.Uin, int64(qq.GetInt("groupCode")), &message.SendingMessage{Elements: []message.IMessageElement{&message.TextElement{Content: content}}}) @@ -199,9 +208,14 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) { case []byte: content = string(msg.([]byte)) - case *http.Response: - data, _ := ioutil.ReadAll(msg.(*http.Response).Body) - id = bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: "\n"}, &coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + case core.ImageUrl: + data, err := httplib.Get(string(msg.(core.ImageUrl))).Bytes() + if err != nil { + sender.Reply(err) + return 0, nil + } else { + id = bot.SendGroupMessage(m.GroupCode, &message.SendingMessage{Elements: []message.IMessageElement{&message.AtElement{Target: m.Sender.Uin}, &message.TextElement{Content: "\n"}, &coolq.LocalImageElement{Stream: bytes.NewReader(data)}}}) + } } if content != "" { if strings.Contains(content, "\n") { diff --git a/im/tg/tg.go b/im/tg/tg.go index 49b9367..1497814 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -2,10 +2,10 @@ package tg import ( "fmt" - "net/http" "strings" "time" + "github.com/astaxie/beego/httplib" "github.com/beego/beego/v2/core/logs" "github.com/cdle/sillyGirl/core" tb "gopkg.in/tucnak/telebot.v2" @@ -196,10 +196,16 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) { }) } rt, err = b.Send(r, msg.(string), options...) - case *http.Response: - rts, err := b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(msg.(*http.Response).Body)}}, options...) - if err == nil { - rt = &rts[0] + case core.ImageUrl: + rsp, err := httplib.Get(string(msg.(core.ImageUrl))).Response() + if err != nil { + sender.Reply(err) + return 0, nil + } else { + rts, err := b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(rsp.Body)}}, options...) + if err == nil { + rt = &rts[0] + } } } if err != nil {