diff --git a/heroku/modules/help.py b/heroku/modules/help.py index aaff2f5..43f2d69 100644 --- a/heroku/modules/help.py +++ b/heroku/modules/help.py @@ -333,7 +333,7 @@ class Help(loader.Module): await utils.answer( message, - (self.config["desc_icon"] + " {}\n
{}
{}").format( + (self.config["desc_icon"] + " {}\n
{}
{}").format( reply, "".join(core_ + plain_ + (no_commands_ if force else [])), ( diff --git a/heroku/tl/utils.py b/heroku/tl/utils.py deleted file mode 100644 index 1e61492..0000000 --- a/heroku/tl/utils.py +++ /dev/null @@ -1,146 +0,0 @@ -""" -Simple HTML -> Telegram entity parser. -""" -import struct -from collections import deque -from html.parser import HTMLParser -from typing import Tuple, List - -from herokutl import helpers -from herokutl.tl.types import ( - MessageEntityBold, MessageEntityItalic, MessageEntityCode, - MessageEntityPre, MessageEntityEmail, MessageEntityUrl, - MessageEntityTextUrl, MessageEntityUnderline, - MessageEntityStrike, MessageEntityBlockquote, - TypeMessageEntity, MessageEntityCustomEmoji, MessageEntitySpoiler -) - - -# Helpers from markdown.py -def _add_surrogate(text): - return ''.join( - ''.join(chr(y) for y in struct.unpack('
tag is
- # probably intended for syntax highlighting.
- #
- # Syntax highlighting is set with
- # codeblock
- # inside tags
- pre = self._building_entities['pre']
- try:
- pre.language = attrs['class'][len('language-'):]
- except KeyError:
- pass
- except KeyError:
- EntityType = MessageEntityCode
- elif tag == 'pre':
- EntityType = MessageEntityPre
- args["language"] = ''
- elif tag == 'a':
- try:
- url = attrs['href']
- except KeyError:
- return
- if url.startswith('mailto:'):
- url = url[len('mailto:'):]
- EntityType = MessageEntityEmail
- else:
- if self.get_starttag_text() == url:
- EntityType = MessageEntityUrl
- else:
- EntityType = MessageEntityTextUrl
- args['url'] = _del_surrogate(url)
- url = None
- self._open_tags_meta.popleft()
- self._open_tags_meta.appendleft(url)
- elif tag == "emoji" and CUSTOM_EMOJIS:
- EntityType = MessageEntityCustomEmoji
- args["document_id"] = int(attrs["document_id"])
-
- if EntityType and tag not in self._building_entities:
- self._building_entities[tag] = EntityType(
- offset=len(self.text),
- # The length will be determined when closing the tag.
- length=0,
- **args)
-
- def handle_data(self, text):
- previous_tag = self._open_tags[0] if len(self._open_tags) > 0 else ''
- if previous_tag == 'a':
- url = self._open_tags_meta[0]
- if url:
- text = url
-
- for tag, entity in self._building_entities.items():
- entity.length += len(text)
-
- self.text += text
-
- def handle_endtag(self, tag):
- try:
- self._open_tags.popleft()
- self._open_tags_meta.popleft()
- except IndexError:
- pass
- entity = self._building_entities.pop(tag, None)
- if entity:
- self.entities.append(entity)
-
-
-def parse(html: str) -> Tuple[str, List[TypeMessageEntity]]:
- """
- Parses the given HTML message and returns its stripped representation
- plus a list of the MessageEntity's that were found.
-
- :param html: the message with HTML to be parsed.
- :return: a tuple consisting of (clean message, [message entities]).
- """
- if not html:
- return html, []
-
- parser = HTMLToTelegramParser()
- parser.feed(_add_surrogate(html))
- text = helpers.strip_text(parser.text, parser.entities)
- return _del_surrogate(text), parser.entities
-
-
-CUSTOM_EMOJIS = True # Can be disabled externally
\ No newline at end of file
diff --git a/heroku/utils.py b/heroku/utils.py
index f9acf3b..55f5e1a 100644
--- a/heroku/utils.py
+++ b/heroku/utils.py
@@ -106,10 +106,6 @@ from ._internal import fw_protect
from .inline.types import BotInlineCall, InlineCall, InlineMessage
from .tl_cache import CustomTelegramClient
from .types import HerokuReplyMarkup, ListLike, Module
-############# Temporary bypass of the original parser
-from .tl.utils import parse
-herokutl.extensions.html.parse = parse
-############# Issue: https://github.com/LonamiWebs/Telethon/issues/4627
FormattingEntity = typing.Union[
MessageEntityUnknown,