Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit c7784b0ea18e72c5fdae8761ca4ccff877be34f8 Author: Paul <36549980+Humorhenker@users.noreply.github.com> Date: Sat Apr 03 23:15:19 2021 +0000 Adding caption to send telegram images. Fixes #1357 (#1358) * 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> diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go index dbbc36e..a93c71b 100644 --- a/bridge/telegram/handlers.go +++ b/bridge/telegram/handlers.go @@ -27 +27 @@ package btelegram    import (   "html" - "regexp" + "path/filepath"   "strconv"   "strings"   "unicode/utf16" @@ -39121 +39132 @@ func (b *Btelegram) handleUploadFile(msg *config.Message, chatid int64) string {   Name: fi.Name,   Bytes: *fi.Data,   } - re := regexp.MustCompile(".(jpg|jpe|png)$") - if re.MatchString(fi.Name) { - c = tgbotapi.NewPhotoUpload(chatid, file) - } else { - c = tgbotapi.NewDocumentUpload(chatid, file) + switch filepath.Ext(fi.Name) { + case ".jpg", ".jpe", ".png": + pc := tgbotapi.NewPhotoUpload(chatid, file) + pc.Caption, pc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) + 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)   if err != nil {   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 ""  } diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go index f1c7168..0f08a45 100644 --- a/bridge/telegram/telegram.go +++ b/bridge/telegram/telegram.go @@ -696 +6928 @@ func (b *Btelegram) JoinChannel(channel config.ChannelInfo) error {   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) {   b.Log.Debugf("=> Receiving %#v", msg)   @@ -13124 +1537 @@ func (b *Btelegram) getFileDirectURL(id string) string {    func (b *Btelegram) sendMessage(chatid int64, username, text string) (string, error) {   m := tgbotapi.NewMessage(chatid, "") - m.Text = 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.Text, m.ParseMode = TGGetParseMode(b, username, text)     m.DisableWebPagePreview = b.GetBool("DisableWebPagePreview")