From 045f2779827b8e5badcad1eb66cf415d1f752edf Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Wed, 6 Oct 2021 16:45:44 +0800 Subject: [PATCH] update --- core/im.go | 1 + im/tg/tg.go | 30 +++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/core/im.go b/core/im.go index 48e3329..1aa19d4 100644 --- a/core/im.go +++ b/core/im.go @@ -39,6 +39,7 @@ var R Replace var N Notify type ImageUrl string +type ImagePath string type Faker struct { Message string diff --git a/im/tg/tg.go b/im/tg/tg.go index e68aa60..fd5fb2f 100644 --- a/im/tg/tg.go +++ b/im/tg/tg.go @@ -2,6 +2,8 @@ package tg import ( "fmt" + "os" + "regexp" "strings" "time" @@ -55,7 +57,22 @@ func init() { b.Send(&tb.User{ID: i}, s) } core.GroupPushs["tg"] = func(i, j int, s string) { - b.Send(&tb.Chat{ID: int64(i)}, s) + paths := []string{} + for _, v := range regexp.MustCompile(`\[CQ:image,file=([^\[\]]+)\]`).FindAllStringSubmatch(s, -1) { + paths = append(paths, core.ExecPath+"/data/images/"+v[1]) + s = strings.Replace(s, fmt.Sprintf(v[0]), "", -1) + } + ct := &tb.Chat{ID: int64(i)} + b.Send(ct, s) + for _, path := range paths { + func() { + f, err := os.Open(path) + if err == nil { + defer f.Close() + b.SendAlbum(ct, tb.Album{&tb.Photo{File: tb.FromReader(f)}}) + } + }() + } } b.Handle(tb.OnText, Handler) logs.Info("监听telegram机器人") @@ -201,6 +218,17 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) { }) } rt, err = b.Send(r, msg.(string), options...) + case core.ImagePath: + f, err := os.Open(string(msg.(core.ImagePath))) + if err != nil { + sender.Reply(err) + return 0, nil + } else { + rts, err := b.SendAlbum(r, tb.Album{&tb.Photo{File: tb.FromReader(f)}}, options...) + if err == nil { + rt = &rts[0] + } + } case core.ImageUrl: rsp, err := httplib.Get(string(msg.(core.ImageUrl))).Response() if err != nil {