import re from struct import unpack from pyrogram.api.types import ( MessageEntityBold as Bold, MessageEntityItalic as Italic, MessageEntityCode as Code, MessageEntityTextUrl as Url, MessageEntityPre as Pre, InputMessageEntityMentionName as Mention ) class HTML: SMP_RE = re.compile(r"[\U00010000-\U0010FFFF]") BOLD_RE = r"(?P(?P.*?))" STRONG_RE = r"(?P(?P.*?))" ITALIC_RE = r"(?P(?P.*?))" EMPATHIZE_RE = r"(?P(?P.*?))" CODE_RE = r"(?P(?P.*?))" PRE_RE = r"(?P
(?P.*?)
)" MENTION_RE = r"(?P\d+?)\">(?P.*?))" URL_RE = r"(?P.*?)\">(?P.*?))" HTML_RE = re.compile("|".join([BOLD_RE, STRONG_RE, ITALIC_RE, EMPATHIZE_RE, CODE_RE, PRE_RE, MENTION_RE, URL_RE])) @classmethod def add_surrogates(cls, text): return cls.SMP_RE.sub( lambda match: # Split SMP in two surrogates "".join(chr(i) for i in unpack("