From f57370f33abf7e2d61d39f4867c9c95f9fc6cd8c Mon Sep 17 00:00:00 2001 From: Wim Date: Sat, 2 Mar 2019 22:38:44 +0100 Subject: [PATCH] Add support for URL in messageEntities (telegram). Fixes #735 (#736) --- .travis.yml | 2 ++ bridge/telegram/handlers.go | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/.travis.yml b/.travis.yml index 295540a1..5393c96b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -57,5 +57,7 @@ deploy: branch: v1.8.47 file: ci/deploy.json user: 42wim + on: + all_branches: true key: secure: "CeXXe6JOmt7HYR81MdWLua0ltQHhDdkIeRGBFbgd7hkb1wi8eF9DgpAcQrTso8NIlHNZmSAP46uhFgsRvkuezzX0ygalZ7DCJyAyn3sAMEh+UQSHV1WGThRehTtidqRGjetzsIGSwdrJOWil+XTfbO1Z8DGzfakhSuAZka8CM4BAoe3YeP9rYK8h+84x0GHfczvsLtXZ3mWLvQuwe4pK6+ItBCUg0ae7O7ZUpWHy0xQQkkWztY/6RAzXfaG7DuGjIw+20fhx3WOXRNpHCtZ6Bc3qERCpk0s1HhlQWlrN9wDaFTBWYwlvSnNgvxxMbNXJ6RrRJ0l0bA7FUswYwyroxhzrGLdzWDg8dHaQkypocngdalfhpsnoO9j3ApJhomUFJ3UoEq5nOGRUrKn8MPi+dP0zE4kNQ3e4VNa1ufNrvfpWolMg3xh8OXuhQdD5wIM5zFAbRJLqWSCVAjPq4DDPecmvXBOlIial7oa312lN5qnBnUjvAcxszZ+FUyDHT1Grxzna4tMwxY9obPzZUzm7359AOCCwIQFVB8GLqD2nwIstcXS0zGRz+fhviPipHuBa02q5bGUZwmkvrSNab0s8Jo7pCrel2Rz3nWPKaiCfq2WjbW1CLheSMkOQrjsdUd1hhbqNWFPUjJPInTc77NAKCfm5runv5uyowRLh4NNd0sI=" diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go index 93576fb4..fa8f2ffb 100644 --- a/bridge/telegram/handlers.go +++ b/bridge/telegram/handlers.go @@ -144,6 +144,9 @@ func (b *Btelegram) handleRecv(updates <-chan tgbotapi.Update) { // quote the previous message b.handleQuoting(&rmsg, message) + // handle entities (adding URLs) + b.handleEntities(&rmsg, message) + if rmsg.Text != "" || len(rmsg.Extra) > 0 { rmsg.Text = helper.RemoveEmptyNewLines(rmsg.Text) // channels don't have (always?) user information. see #410 @@ -353,3 +356,22 @@ func (b *Btelegram) handleQuote(message, quoteNick, quoteMessage string) string format = strings.Replace(format, "{QUOTEMESSAGE}", quoteMessage, -1) return format } + +// handleEntities handles messageEntities +func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Message) { + if message.Entities == nil { + return + } + // for now only do URL replacements + for _, e := range *message.Entities { + if e.Type == "text_link" { + url, err := e.ParseURL() + if err != nil { + b.Log.Errorf("entity text_link url parse failed: %s", err) + continue + } + link := rmsg.Text[e.Offset : e.Offset+e.Length] + rmsg.Text = strings.Replace(rmsg.Text, link, url.String(), 1) + } + } +}