This commit is contained in:
cdle
2021-10-23 14:04:46 +08:00
parent 0d9988e33b
commit dd302a50a6
+36 -1
View File
@@ -1,6 +1,8 @@
package tg
import (
"bytes"
"encoding/base64"
"fmt"
"net/http"
"net/url"
@@ -264,6 +266,7 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) {
case []byte:
rt, err = b.Send(r, string(msg.([]byte)), options...)
case string:
message := msg.(string)
if edit != nil && sender.reply != nil {
if *edit == 0 {
if sender.reply != nil {
@@ -279,12 +282,44 @@ func (sender *Sender) Reply(msgs ...interface{}) (int, error) {
}
return sender.reply.ID, nil
}
paths := []string{}
for _, v := range regexp.MustCompile(`\[CQ:image,file=([^\[\]]+)\]`).FindAllStringSubmatch(message, -1) {
paths = append(paths, "data/images/"+v[1])
message = strings.Replace(message, fmt.Sprintf(`[CQ:image,file=%s]`, v[1]), "", -1)
}
if len(paths) > 0 {
is := []tb.InputMedia{}
for index, path := range paths {
if strings.Contains(message, "base64") {
decodeBytes, _ := base64.StdEncoding.DecodeString(path)
i := &tb.Photo{File: tb.FromReader(bytes.NewReader(decodeBytes))}
if index == 0 {
i.Caption = message
}
is = append(is, i)
} else {
data, err := os.ReadFile(path)
if err == nil {
url := regexp.MustCompile("(https.*)").FindString(string(data))
if url != "" {
i := &tb.Photo{File: tb.FromURL(url)}
if index == 0 {
i.Caption = message
}
is = append(is, i)
}
}
}
}
b.SendAlbum(r, is)
} else {
rt, err = b.Send(r, message, options...)
}
if replace != nil {
b.Delete(&tb.Message{
ID: int(*edit),
})
}
rt, err = b.Send(r, msg.(string), options...)
case core.ImagePath:
f, err := os.Open(string(msg.(core.ImagePath)))
if err != nil {