File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -79,3 +79,41 @@ def parse(self, text):
7979 message = utils .remove_surrogates (text ),
8080 entities = entities
8181 )
82+
83+ def unparse (self , message : str , entities : list ):
84+ message = utils .add_surrogates (message ).strip ()
85+ offset = 0
86+
87+ for entity in entities :
88+ start = entity .offset + offset
89+ type = entity .type
90+ url = entity .url
91+ user = entity .user
92+ sub = message [start : start + entity .length ]
93+
94+ if type == "bold" :
95+ style = "b"
96+ elif type == "italic" :
97+ style = "i"
98+ elif type == "code" :
99+ style = "code"
100+ elif type == "pre" :
101+ style = "pre"
102+ elif type == "text_link" :
103+ offset += 15 + len (url )
104+ message = message [:start ] + message [start :].replace (
105+ sub , "<a href=\" {}\" >{}</a>" .format (url , sub ), 1 )
106+ continue
107+ elif type == "text_mention" :
108+ offset += 28 + len (str (user .id ))
109+ message = message [:start ] + message [start :].replace (
110+ sub , "<a href=\" tg://user?id={}\" >{}</a>" .format (user .id , sub ), 1 )
111+ continue
112+ else :
113+ continue
114+
115+ offset += len (style ) * 2 + 5
116+ message = message [:start ] + message [start :].replace (
117+ sub , "<{0}>{1}</{0}>" .format (style , sub ), 1 )
118+
119+ return utils .remove_surrogates (message )
You can’t perform that action at this time.
0 commit comments