1919import re
2020from collections import OrderedDict
2121
22+ import pyrogram
2223from pyrogram .api .types import (
2324 MessageEntityBold as Bold ,
2425 MessageEntityItalic as Italic ,
2829 MessageEntityMentionName as MentionInvalid ,
2930 InputMessageEntityMentionName as Mention
3031)
32+ from pyrogram .errors import PeerIdInvalid
3133from . import utils
3234
3335
@@ -52,8 +54,8 @@ class Markdown:
5254 ))
5355 MENTION_RE = re .compile (r"tg://user\?id=(\d+)" )
5456
55- def __init__ (self , peers_by_id : dict = None ):
56- self .peers_by_id = peers_by_id or {}
57+ def __init__ (self , client : "pyrogram.BaseClient" = None ):
58+ self .client = client
5759
5860 def parse (self , message : str ):
5961 message = utils .add_surrogates (str (message or "" )).strip ()
@@ -69,12 +71,15 @@ def parse(self, message: str):
6971
7072 if mention :
7173 user_id = int (mention .group (1 ))
72- input_user = self .peers_by_id .get (user_id , None )
74+
75+ try :
76+ input_user = self .client .resolve_peer (user_id )
77+ except PeerIdInvalid :
78+ input_user = None
7379
7480 entity = (
7581 Mention (offset = start , length = len (text ), user_id = input_user )
76- if input_user
77- else MentionInvalid (offset = start , length = len (text ), user_id = user_id )
82+ if input_user else MentionInvalid (offset = start , length = len (text ), user_id = user_id )
7883 )
7984 else :
8085 entity = Url (offset = start , length = len (text ), url = url )
0 commit comments