diff --git a/pyrogram/client/style/html.py b/pyrogram/client/style/html.py index 17a5daa6..5617cb54 100644 --- a/pyrogram/client/style/html.py +++ b/pyrogram/client/style/html.py @@ -64,16 +64,8 @@ class Parser(HTMLParser): mention = Parser.MENTION_RE.match(url) if mention: - user_id = int(mention.group(1)) - - try: - user = self.client.resolve_peer(user_id) - except PeerIdInvalid: - entity = types.MessageEntityMentionName - extra["user_id"] = user_id - else: - entity = types.InputMessageEntityMentionName - extra["user_id"] = user + entity = types.InputMessageEntityMentionName + extra["user_id"] = int(mention.group(1)) else: entity = types.MessageEntityTextUrl extra["url"] = url @@ -129,10 +121,21 @@ class HTML: raise ValueError("Unclosed tags: {}".format(", ".join(unclosed_tags))) + entities = [] + + for entity in parser.entities: + if isinstance(entity, types.InputMessageEntityMentionName): + try: + entity.user_id = self.client.resolve_peer(entity.user_id) + except PeerIdInvalid: + continue + + entities.append(entity) + # TODO: OrderedDict to be removed in Python 3.6 return OrderedDict([ ("message", utils.remove_surrogates(parser.text)), - ("entities", parser.entities) + ("entities", entities) ]) @staticmethod