Skip to content

Commit 19bf138

Browse files
committed
Add support for processing language parameter in message entities
1 parent 535b4cc commit 19bf138

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

telebot/formatting.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,13 +418,16 @@ def apply_html_entities(text: str, entities: Optional[List], custom_subs: Option
418418
utf16_text = text.encode("utf-16-le")
419419
html_text = ""
420420

421-
def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None):
421+
def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None, language=None):
422422
upd_text = upd_text.decode("utf-16-le")
423423
if subst_type == "text_mention":
424424
subst_type = "text_link"
425425
url = "tg://user?id={0}".format(user.id)
426426
elif subst_type == "mention":
427427
url = "https://t.me/{0}".format(upd_text[1:])
428+
elif subst_type == "pre":
429+
if language is not None:
430+
return '<pre><code class="language-{0}">{1}</code></pre>'.format(language, upd_text)
428431
upd_text = upd_text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
429432
if not subst_type or not _subs.get(subst_type):
430433
return upd_text
@@ -444,14 +447,16 @@ def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None):
444447
offset = entity.offset
445448

446449
new_string = func(utf16_text[offset * 2: (offset + entity.length) * 2], subst_type=entity.type,
447-
url=entity.url, user=entity.user, custom_emoji_id=entity.custom_emoji_id)
450+
url=entity.url, user=entity.user, custom_emoji_id=entity.custom_emoji_id,
451+
language=entity.language)
448452
start_index = len(html_text)
449453
html_text += new_string
450454
offset += entity.length
451455
end_index = len(html_text)
452456
elif entity.offset == offset:
453457
new_string = func(utf16_text[offset * 2: (offset + entity.length) * 2], subst_type=entity.type,
454-
url=entity.url, user=entity.user, custom_emoji_id=entity.custom_emoji_id)
458+
url=entity.url, user=entity.user, custom_emoji_id=entity.custom_emoji_id,
459+
language=entity.language)
455460
start_index = len(html_text)
456461
html_text += new_string
457462
end_index = len(html_text)
@@ -463,7 +468,8 @@ def func(upd_text, subst_type=None, url=None, user=None, custom_emoji_id=None):
463468
# And we don't change it).
464469
entity_string = html_text[start_index: end_index].encode("utf-16-le")
465470
formatted_string = func(entity_string, subst_type=entity.type, url=entity.url, user=entity.user,
466-
custom_emoji_id=entity.custom_emoji_id). \
471+
custom_emoji_id=entity.custom_emoji_id,
472+
language=entity.language). \
467473
replace("&amp;", "&").replace("&lt;", "<").replace("&gt;", ">")
468474
html_text = html_text[:start_index] + formatted_string + html_text[end_index:]
469475
end_index = len(html_text)

0 commit comments

Comments
 (0)