diff --git a/pyrogram/parser/html.py b/pyrogram/parser/html.py index c574e6ffb1..987281b177 100644 --- a/pyrogram/parser/html.py +++ b/pyrogram/parser/html.py @@ -233,10 +233,11 @@ def recursive(entity_i: int) -> int: while i < len(entities): i += recursive(i) - last_offset = entities_offsets[-1][1] - # no need to sort, but still add entities starting from the end - for entity, offset in reversed(entities_offsets): - text = text[:offset] + entity + html.escape(text[offset:last_offset]) + text[last_offset:] - last_offset = offset + if entities_offsets: + last_offset = entities_offsets[-1][1] + # no need to sort, but still add entities starting from the end + for entity, offset in reversed(entities_offsets): + text = text[:offset] + entity + html.escape(text[offset:last_offset]) + text[last_offset:] + last_offset = offset return utils.remove_surrogates(text) diff --git a/tests/parser/test_html.py b/tests/parser/test_html.py index 0027290561..b9138f3cf1 100644 --- a/tests/parser/test_html.py +++ b/tests/parser/test_html.py @@ -137,3 +137,11 @@ def test_html_unparse_escaped_nested(): pyrogram.types.MessageEntity(type=pyrogram.enums.MessageEntityType.UNDERLINE, offset=8, length=16)]) assert HTML.unparse(text=text, entities=entities) == expected + + +def test_html_unparse_no_entities(): + expected = "text" + text = "text" + entities = [] + + assert HTML.unparse(text=text, entities=entities) == expected