From 07a8a73e3ed6d1a4c69141a3fd8b0703193a0a16 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Tue, 3 Apr 2018 14:23:05 +0200 Subject: [PATCH] Support callable parse_mode's This allows to more easily plug in custom parse methods. --- telethon/telegram_client.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index ca072f4f..08c32b88 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -679,13 +679,18 @@ class TelegramClient(TelegramBareClient): if not parse_mode: return message, [] - parse_mode = parse_mode.lower() - if parse_mode in {'md', 'markdown'}: - message, msg_entities = markdown.parse(message) - elif parse_mode.startswith('htm'): - message, msg_entities = html.parse(message) + if isinstance(parse_mode, str): + parse_mode = parse_mode.lower() + if parse_mode in {'md', 'markdown'}: + message, msg_entities = markdown.parse(message) + elif parse_mode.startswith('htm'): + message, msg_entities = html.parse(message) + else: + raise ValueError('Unknown parsing mode: {}'.format(parse_mode)) + elif callable(parse_mode): + message, msg_entities = parse_mode(message) else: - raise ValueError('Unknown parsing mode: {}'.format(parse_mode)) + raise TypeError('Invalid parsing mode type: {}'.format(parse_mode)) for i, e in enumerate(msg_entities): if isinstance(e, MessageEntityTextUrl):