summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/telegram/handlers.go33
-rw-r--r--bridge/telegram/telegram.go41
2 files changed, 45 insertions, 29 deletions
diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go
index dbbc36ea..a93c71bb 100644
--- a/bridge/telegram/handlers.go
+++ b/bridge/telegram/handlers.go
@@ -2,7 +2,7 @@ package btelegram
import (
"html"
- "regexp"
+ "path/filepath"
"strconv"
"strings"
"unicode/utf16"
@@ -391,21 +391,32 @@ 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 f1c7168c..0f08a45b 100644
--- a/bridge/telegram/telegram.go
+++ b/bridge/telegram/telegram.go
@@ -69,6 +69,28 @@ 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)
@@ -131,24 +153,7 @@ 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")