mirror of
https://github.com/cwinfo/matterbridge.git
synced 2024-11-25 06:21:36 +00:00
* Used tgbotapi caption option to attach caption to photos / documents * remove "text/template/parse" * added TGGetParseMode to clean up. Added tg upload function for video, audio and voice * fixed varname Textout. Changed fileextension logic to avoid chaining regex * fixed textout varname * fixed parsemode varname * gofmt Co-authored-by: Wim <wim@42.be>
This commit is contained in:
parent
21eb37e471
commit
b293e3fa75
@ -2,7 +2,7 @@ package btelegram
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"html"
|
"html"
|
||||||
"regexp"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode/utf16"
|
"unicode/utf16"
|
||||||
@ -391,21 +391,32 @@ func (b *Btelegram) handleUploadFile(msg *config.Message, chatid int64) string {
|
|||||||
Name: fi.Name,
|
Name: fi.Name,
|
||||||
Bytes: *fi.Data,
|
Bytes: *fi.Data,
|
||||||
}
|
}
|
||||||
re := regexp.MustCompile(".(jpg|jpe|png)$")
|
switch filepath.Ext(fi.Name) {
|
||||||
if re.MatchString(fi.Name) {
|
case ".jpg", ".jpe", ".png":
|
||||||
c = tgbotapi.NewPhotoUpload(chatid, file)
|
pc := tgbotapi.NewPhotoUpload(chatid, file)
|
||||||
} else {
|
pc.Caption, pc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
|
||||||
c = tgbotapi.NewDocumentUpload(chatid, file)
|
c = pc
|
||||||
|
case ".mp4", ".m4v":
|
||||||
|
vc := tgbotapi.NewVideoUpload(chatid, file)
|
||||||
|
vc.Caption, vc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
|
||||||
|
c = vc
|
||||||
|
case ".mp3", ".oga":
|
||||||
|
ac := tgbotapi.NewAudioUpload(chatid, file)
|
||||||
|
ac.Caption, ac.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
|
||||||
|
c = ac
|
||||||
|
case ".ogg":
|
||||||
|
voc := tgbotapi.NewVoiceUpload(chatid, file)
|
||||||
|
voc.Caption, voc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
|
||||||
|
c = voc
|
||||||
|
default:
|
||||||
|
dc := tgbotapi.NewDocumentUpload(chatid, file)
|
||||||
|
dc.Caption, dc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
|
||||||
|
c = dc
|
||||||
}
|
}
|
||||||
_, err := b.c.Send(c)
|
_, err := b.c.Send(c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.Log.Errorf("file upload failed: %#v", err)
|
b.Log.Errorf("file upload failed: %#v", err)
|
||||||
}
|
}
|
||||||
if fi.Comment != "" {
|
|
||||||
if _, err := b.sendMessage(chatid, msg.Username, fi.Comment); err != nil {
|
|
||||||
b.Log.Errorf("posting file comment %s failed: %s", fi.Comment, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
@ -69,6 +69,28 @@ func (b *Btelegram) JoinChannel(channel config.ChannelInfo) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TGGetParseMode(b *Btelegram, username string, text string) (textout string, parsemode string) {
|
||||||
|
textout = username + text
|
||||||
|
if b.GetString("MessageFormat") == HTMLFormat {
|
||||||
|
b.Log.Debug("Using mode HTML")
|
||||||
|
parsemode = tgbotapi.ModeHTML
|
||||||
|
}
|
||||||
|
if b.GetString("MessageFormat") == "Markdown" {
|
||||||
|
b.Log.Debug("Using mode markdown")
|
||||||
|
parsemode = tgbotapi.ModeMarkdown
|
||||||
|
}
|
||||||
|
if b.GetString("MessageFormat") == MarkdownV2 {
|
||||||
|
b.Log.Debug("Using mode MarkdownV2")
|
||||||
|
parsemode = MarkdownV2
|
||||||
|
}
|
||||||
|
if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick {
|
||||||
|
b.Log.Debug("Using mode HTML - nick only")
|
||||||
|
textout = username + html.EscapeString(text)
|
||||||
|
parsemode = tgbotapi.ModeHTML
|
||||||
|
}
|
||||||
|
return textout, parsemode
|
||||||
|
}
|
||||||
|
|
||||||
func (b *Btelegram) Send(msg config.Message) (string, error) {
|
func (b *Btelegram) Send(msg config.Message) (string, error) {
|
||||||
b.Log.Debugf("=> Receiving %#v", msg)
|
b.Log.Debugf("=> Receiving %#v", msg)
|
||||||
|
|
||||||
@ -131,24 +153,7 @@ func (b *Btelegram) getFileDirectURL(id string) string {
|
|||||||
|
|
||||||
func (b *Btelegram) sendMessage(chatid int64, username, text string) (string, error) {
|
func (b *Btelegram) sendMessage(chatid int64, username, text string) (string, error) {
|
||||||
m := tgbotapi.NewMessage(chatid, "")
|
m := tgbotapi.NewMessage(chatid, "")
|
||||||
m.Text = username + text
|
m.Text, m.ParseMode = TGGetParseMode(b, username, text)
|
||||||
if b.GetString("MessageFormat") == HTMLFormat {
|
|
||||||
b.Log.Debug("Using mode HTML")
|
|
||||||
m.ParseMode = tgbotapi.ModeHTML
|
|
||||||
}
|
|
||||||
if b.GetString("MessageFormat") == "Markdown" {
|
|
||||||
b.Log.Debug("Using mode markdown")
|
|
||||||
m.ParseMode = tgbotapi.ModeMarkdown
|
|
||||||
}
|
|
||||||
if b.GetString("MessageFormat") == MarkdownV2 {
|
|
||||||
b.Log.Debug("Using mode MarkdownV2")
|
|
||||||
m.ParseMode = MarkdownV2
|
|
||||||
}
|
|
||||||
if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick {
|
|
||||||
b.Log.Debug("Using mode HTML - nick only")
|
|
||||||
m.Text = username + html.EscapeString(text)
|
|
||||||
m.ParseMode = tgbotapi.ModeHTML
|
|
||||||
}
|
|
||||||
|
|
||||||
m.DisableWebPagePreview = b.GetBool("DisableWebPagePreview")
|
m.DisableWebPagePreview = b.GetBool("DisableWebPagePreview")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user