diff --git a/telethon/extensions/html.py b/telethon/extensions/html.py index d4233473..e950900d 100644 --- a/telethon/extensions/html.py +++ b/telethon/extensions/html.py @@ -9,8 +9,8 @@ from html.parser import HTMLParser from ..tl.types import ( MessageEntityBold, MessageEntityItalic, MessageEntityCode, MessageEntityPre, MessageEntityEmail, MessageEntityUrl, - MessageEntityTextUrl -) + MessageEntityTextUrl, + MessageEntityMentionName) # Helpers from markdown.py @@ -178,6 +178,9 @@ def unparse(text, entities): elif entity_type == MessageEntityTextUrl: html.append('{}' .format(escape(entity.url), entity_text)) + elif entity_type == MessageEntityMentionName: + html.append('{}' + .format(entity.user_id, entity_text)) else: skip_entity = True last_offset = entity.offset + (0 if skip_entity else entity.length) diff --git a/telethon/extensions/markdown.py b/telethon/extensions/markdown.py index 5274dc85..2560554a 100644 --- a/telethon/extensions/markdown.py +++ b/telethon/extensions/markdown.py @@ -9,8 +9,8 @@ from ..helpers import add_surrogate, del_surrogate from ..tl import TLObject from ..tl.types import ( MessageEntityBold, MessageEntityItalic, MessageEntityCode, - MessageEntityPre, MessageEntityTextUrl -) + MessageEntityPre, MessageEntityTextUrl, + MessageEntityMentionName) DEFAULT_DELIMITERS = { '**': MessageEntityBold, @@ -120,9 +120,9 @@ def parse(message, delimiters=None, url_re=None): # If this is the case, we want to insert the delimiter character back. if current is not None: message = ( - message[:current.offset] - + end_delimiter - + message[current.offset:] + message[:current.offset] + + end_delimiter + + message[current.offset:] ) return del_surrogate(message), result @@ -163,9 +163,12 @@ def unparse(text, entities, delimiters=None, url_fmt=None): text = text[:s] + delimiter + text[s:e] + delimiter + text[e:] elif isinstance(entity, MessageEntityTextUrl) and url_fmt: text = ( - text[:s] + - add_surrogate(url_fmt.format(text[s:e], entity.url)) + - text[e:] + text[:s] + + add_surrogate(url_fmt.format(text[s:e], entity.url)) + + text[e:] ) - + elif isinstance(entity, MessageEntityMentionName): + text = text[:entity.offset] + "[{}](tg://user?id={})".format( + text[entity.offset:entity.offset + entity.length], entity.user_id) + text[ + entity.offset + entity.length:] return del_surrogate(text)