From 363c2604dfa7504c829f58be5c8a64448ffc4f62 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Tue, 20 Sep 2022 13:12:01 +0200 Subject: [PATCH] Strip 0-length message entities Closes #3884. --- telethon/client/messageparse.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/telethon/client/messageparse.py b/telethon/client/messageparse.py index 322c541e..4ddfa523 100644 --- a/telethon/client/messageparse.py +++ b/telethon/client/messageparse.py @@ -87,10 +87,15 @@ class MessageParseMethods: message, msg_entities = parse_mode.parse(message) if original_message and not message and not msg_entities: raise ValueError("Failed to parse message") - + for i in reversed(range(len(msg_entities))): e = msg_entities[i] - if isinstance(e, types.MessageEntityTextUrl): + if not e.length: + # 0-length MessageEntity is no longer valid #3884. + # Because the user can provide their own parser (with reasonable 0-length + # entities), strip them here rather than fixing the built-in parsers. + del msg_entities[i] + elif isinstance(e, types.MessageEntityTextUrl): m = re.match(r'^@|\+|tg://user\?id=(\d+)', e.url) if m: user = int(m.group(1)) if m.group(1) else e.url