summaryrefslogtreecommitdiffstats
path: root/bridge/telegram
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/telegram')
-rw-r--r--bridge/telegram/handlers.go76
-rw-r--r--bridge/telegram/telegram.go8
2 files changed, 43 insertions, 41 deletions
diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go
index 3292e058..80a7185c 100644
--- a/bridge/telegram/handlers.go
+++ b/bridge/telegram/handlers.go
@@ -9,7 +9,7 @@ import (
"github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/bridge/helper"
- tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
+ tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
func (b *Btelegram) handleUpdate(rmsg *config.Message, message, posted, edited *tgbotapi.Message) *tgbotapi.Message {
@@ -94,7 +94,7 @@ func (b *Btelegram) handleQuoting(rmsg *config.Message, message *tgbotapi.Messag
// handleUsername handles the correct setting of the username
func (b *Btelegram) handleUsername(rmsg *config.Message, message *tgbotapi.Message) {
if message.From != nil {
- rmsg.UserID = strconv.Itoa(message.From.ID)
+ rmsg.UserID = strconv.FormatInt(message.From.ID, 10)
if b.GetBool("UseFirstName") {
rmsg.Username = message.From.FirstName
}
@@ -167,7 +167,7 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) {
rmsg.Text = helper.RemoveEmptyNewLines(rmsg.Text)
// channels don't have (always?) user information. see #410
if message.From != nil {
- rmsg.Avatar = helper.GetAvatar(b.avatarMap, strconv.Itoa(message.From.ID), b.General)
+ rmsg.Avatar = helper.GetAvatar(b.avatarMap, strconv.FormatInt(message.From.ID, 10), b.General)
}
b.Log.Debugf("<= Sending message from %s on %s to gateway", rmsg.Username, b.Account)
@@ -180,42 +180,44 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) {
// handleDownloadAvatar downloads the avatar of userid from channel
// sends a EVENT_AVATAR_DOWNLOAD message to the gateway if successful.
// logs an error message if it fails
-func (b *Btelegram) handleDownloadAvatar(userid int, channel string) {
+func (b *Btelegram) handleDownloadAvatar(userid int64, channel string) {
rmsg := config.Message{
Username: "system",
Text: "avatar",
Channel: channel,
Account: b.Account,
- UserID: strconv.Itoa(userid),
+ UserID: strconv.FormatInt(userid, 10),
Event: config.EventAvatarDownload,
Extra: make(map[string][]interface{}),
}
- if _, ok := b.avatarMap[strconv.Itoa(userid)]; !ok {
- photos, err := b.c.GetUserProfilePhotos(tgbotapi.UserProfilePhotosConfig{UserID: userid, Limit: 1})
- if err != nil {
- b.Log.Errorf("Userprofile download failed for %#v %s", userid, err)
- }
+ if _, ok := b.avatarMap[strconv.FormatInt(userid, 10)]; ok {
+ return
+ }
- if len(photos.Photos) > 0 {
- photo := photos.Photos[0][0]
- url := b.getFileDirectURL(photo.FileID)
- name := strconv.Itoa(userid) + ".png"
- b.Log.Debugf("trying to download %#v fileid %#v with size %#v", name, photo.FileID, photo.FileSize)
+ photos, err := b.c.GetUserProfilePhotos(tgbotapi.UserProfilePhotosConfig{UserID: userid, Limit: 1})
+ if err != nil {
+ b.Log.Errorf("Userprofile download failed for %#v %s", userid, err)
+ }
- err := helper.HandleDownloadSize(b.Log, &rmsg, name, int64(photo.FileSize), b.General)
- if err != nil {
- b.Log.Error(err)
- return
- }
- data, err := helper.DownloadFile(url)
- if err != nil {
- b.Log.Errorf("download %s failed %#v", url, err)
- return
- }
- helper.HandleDownloadData(b.Log, &rmsg, name, rmsg.Text, "", data, b.General)
- b.Remote <- rmsg
+ if len(photos.Photos) > 0 {
+ photo := photos.Photos[0][0]
+ url := b.getFileDirectURL(photo.FileID)
+ name := strconv.FormatInt(userid, 10) + ".png"
+ b.Log.Debugf("trying to download %#v fileid %#v with size %#v", name, photo.FileID, photo.FileSize)
+
+ err := helper.HandleDownloadSize(b.Log, &rmsg, name, int64(photo.FileSize), b.General)
+ if err != nil {
+ b.Log.Error(err)
+ return
}
+ data, err := helper.DownloadFile(url)
+ if err != nil {
+ b.Log.Errorf("download %s failed %#v", url, err)
+ return
+ }
+ helper.HandleDownloadData(b.Log, &rmsg, name, rmsg.Text, "", data, b.General)
+ b.Remote <- rmsg
}
}
@@ -272,7 +274,7 @@ func (b *Btelegram) handleDownload(rmsg *config.Message, message *tgbotapi.Messa
name = message.Document.FileName
text = " " + message.Document.FileName + " : " + url
case message.Photo != nil:
- photos := *message.Photo
+ photos := message.Photo
size = photos[len(photos)-1].FileSize
text, name, url = b.getDownloadInfo(photos[len(photos)-1].FileID, "", true)
}
@@ -331,11 +333,15 @@ func (b *Btelegram) handleDelete(msg *config.Message, chatid int64) (string, err
if msg.ID == "" {
return "", nil
}
+
msgid, err := strconv.Atoi(msg.ID)
if err != nil {
return "", err
}
- _, err = b.c.DeleteMessage(tgbotapi.DeleteMessageConfig{ChatID: chatid, MessageID: msgid})
+
+ cfg := tgbotapi.NewDeleteMessage(chatid, msgid)
+ _, err = b.c.Send(cfg)
+
return "", err
}
@@ -383,23 +389,23 @@ func (b *Btelegram) handleUploadFile(msg *config.Message, chatid int64) string {
}
switch filepath.Ext(fi.Name) {
case ".jpg", ".jpe", ".png":
- pc := tgbotapi.NewPhotoUpload(chatid, file)
+ pc := tgbotapi.NewPhoto(chatid, file)
pc.Caption, pc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
c = pc
case ".mp4", ".m4v":
- vc := tgbotapi.NewVideoUpload(chatid, file)
+ vc := tgbotapi.NewVideo(chatid, file)
vc.Caption, vc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
c = vc
case ".mp3", ".oga":
- ac := tgbotapi.NewAudioUpload(chatid, file)
+ ac := tgbotapi.NewAudio(chatid, file)
ac.Caption, ac.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
c = ac
case ".ogg":
- voc := tgbotapi.NewVoiceUpload(chatid, file)
+ voc := tgbotapi.NewVoice(chatid, file)
voc.Caption, voc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
c = voc
default:
- dc := tgbotapi.NewDocumentUpload(chatid, file)
+ dc := tgbotapi.NewDocument(chatid, file)
dc.Caption, dc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment)
c = dc
}
@@ -439,7 +445,7 @@ func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Messa
indexMovedBy := 0
// for now only do URL replacements
- for _, e := range *message.Entities {
+ for _, e := range message.Entities {
if e.Type == "text_link" {
url, err := e.ParseURL()
if err != nil {
diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go
index 199a76ab..d696e9bc 100644
--- a/bridge/telegram/telegram.go
+++ b/bridge/telegram/telegram.go
@@ -9,7 +9,7 @@ import (
"github.com/42wim/matterbridge/bridge"
"github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/bridge/helper"
- tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
+ tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
const (
@@ -49,11 +49,7 @@ func (b *Btelegram) Connect() error {
}
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
- updates, err := b.c.GetUpdatesChan(u)
- if err != nil {
- b.Log.Debugf("%#v", err)
- return err
- }
+ updates := b.c.GetUpdatesChan(u)
b.Log.Info("Connection succeeded")
go b.handleRecv(updates)
return nil