From b275efaeff94b3a747a6c312829f0b107d831f72 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 7 Dec 2021 20:26:28 +0000 Subject: [PATCH] Add support for code blocks in telegram (#1650) * handle code blocks in telegram. * support multi-line code blocks. * remove import. * handle code blocks in middle of normal text. * support multiple code blocks in same message. --- bridge/telegram/handlers.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go index 84881f7f..7f40ddc9 100644 --- a/bridge/telegram/handlers.go +++ b/bridge/telegram/handlers.go @@ -435,6 +435,9 @@ func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Messa if message.Entities == nil { return } + + var indexMovedBy = 0 + // for now only do URL replacements for _, e := range *message.Entities { if e.Type == "text_link" { @@ -451,5 +454,17 @@ func (b *Btelegram) handleEntities(rmsg *config.Message, message *tgbotapi.Messa link := utf16.Decode(utfEncodedString[e.Offset : e.Offset+e.Length]) rmsg.Text = strings.Replace(rmsg.Text, string(link), url.String(), 1) } + + if e.Type == "code" { + var offset = e.Offset + indexMovedBy + rmsg.Text = rmsg.Text[:offset] + "`" + rmsg.Text[offset:offset + e.Length] + "`" + rmsg.Text[offset + e.Length :] + indexMovedBy += 2 + } + + if e.Type == "pre" { + var offset = e.Offset + indexMovedBy + rmsg.Text = rmsg.Text[:offset] + "```\n" + rmsg.Text[offset:offset + e.Length] + "\n```" + rmsg.Text[offset + e.Length :] + indexMovedBy += 8 + } } }