summaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
authorValdikSS <iam@valdikss.org.ru>2022-04-22 02:00:57 +0300
committerGitHub <noreply@github.com>2022-04-22 01:00:57 +0200
commitce18c948e620b658c19200d6875202877b2691a4 (patch)
tree229c76837307e597c3f6a0526b6197c5564957c2 /bridge
parent7bc93c55061c9272927b2bccffbff94a6959cfdc (diff)
downloadmatterbridge-msglm-ce18c948e620b658c19200d6875202877b2691a4.tar.gz
matterbridge-msglm-ce18c948e620b658c19200d6875202877b2691a4.tar.bz2
matterbridge-msglm-ce18c948e620b658c19200d6875202877b2691a4.zip
Do not apply any markup to URL entities (telegram) (#1808)
handleEntities code uses simple modification offset which does not allow to detect whether the offset is placed before or after the element in already modified string. This works fine is most cases as Telegram server always sort the elements by offset, in ascending order. However, this is not the case when the modification, for example bold text, is applied to the URL. In this case, the offset of URL and bold entity is equal, which raises the issue. This commit introduces additional hack for this case, stripping any entities which intersect with URL.
Diffstat (limited to 'bridge')
-rw-r--r--bridge/telegram/handlers.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go
index adf291dc..985db7f9 100644
--- a/bridge/telegram/handlers.go
+++ b/bridge/telegram/handlers.go
@@ -517,8 +517,8 @@ func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Messa
}
indexMovedBy := 0
+ prevLinkOffset := -1
- // for now only do URL replacements
for _, e := range message.Entities {
asRunes := utf16.Encode([]rune(rmsg.Text))
@@ -537,6 +537,11 @@ func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Messa
}
rmsg.Text = string(utf16.Decode(asRunes[:offset+e.Length])) + " (" + url.String() + ")" + string(utf16.Decode(asRunes[offset+e.Length:]))
indexMovedBy += len(url.String()) + 3
+ prevLinkOffset = e.Offset
+ }
+
+ if e.Offset == prevLinkOffset {
+ continue
}
if e.Type == "code" {