diff --git a/pyrogram/client/ext/base_client.py b/pyrogram/client/ext/base_client.py
index 88623f4a..b5be089b 100644
--- a/pyrogram/client/ext/base_client.py
+++ b/pyrogram/client/ext/base_client.py
@@ -25,7 +25,7 @@ from queue import Queue
from threading import Lock
from pyrogram import __version__
-from ..style import Markdown, HTML
+from ..parser import Parser
from ...session.internals import MsgId
@@ -92,8 +92,7 @@ class BaseClient:
self.rnd_id = MsgId
- self.markdown = Markdown(self)
- self.html = HTML(self)
+ self.parser = Parser(self)
self.session = None
self.media_sessions = {}
diff --git a/pyrogram/client/methods/messages/edit_inline_text.py b/pyrogram/client/methods/messages/edit_inline_text.py
index 927fd80f..349e3e35 100644
--- a/pyrogram/client/methods/messages/edit_inline_text.py
+++ b/pyrogram/client/methods/messages/edit_inline_text.py
@@ -16,6 +16,8 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Union
+
import pyrogram
from pyrogram.api import functions
from pyrogram.client.ext import BaseClient, utils
@@ -26,7 +28,7 @@ class EditInlineText(BaseClient):
self,
inline_message_id: str,
text: str,
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
disable_web_page_preview: bool = None,
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
) -> bool:
@@ -55,13 +57,12 @@ class EditInlineText(BaseClient):
Raises:
RPCError: In case of a Telegram RPC error.
"""
- style = self.html if parse_mode.lower() == "html" else self.markdown
return self.send(
functions.messages.EditInlineBotMessage(
id=utils.unpack_inline_message_id(inline_message_id),
no_webpage=disable_web_page_preview or None,
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(text)
+ **self.parser.parse(text, parse_mode)
)
)
diff --git a/pyrogram/client/methods/messages/edit_message_text.py b/pyrogram/client/methods/messages/edit_message_text.py
index 7e4345c6..e30afdfc 100644
--- a/pyrogram/client/methods/messages/edit_message_text.py
+++ b/pyrogram/client/methods/messages/edit_message_text.py
@@ -29,7 +29,7 @@ class EditMessageText(BaseClient):
chat_id: Union[int, str],
message_id: int,
text: str,
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
disable_web_page_preview: bool = None,
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
) -> "pyrogram.Message":
@@ -63,7 +63,6 @@ class EditMessageText(BaseClient):
Raises:
RPCError: In case of a Telegram RPC error.
"""
- style = self.html if parse_mode.lower() == "html" else self.markdown
r = self.send(
functions.messages.EditMessage(
@@ -71,7 +70,7 @@ class EditMessageText(BaseClient):
id=message_id,
no_webpage=disable_web_page_preview or None,
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(text)
+ **self.parser.parse(text, parse_mode)
)
)
diff --git a/pyrogram/client/methods/messages/send_animation.py b/pyrogram/client/methods/messages/send_animation.py
index 0c4649dd..cff80af5 100644
--- a/pyrogram/client/methods/messages/send_animation.py
+++ b/pyrogram/client/methods/messages/send_animation.py
@@ -32,7 +32,7 @@ class SendAnimation(BaseClient):
animation: str,
caption: str = "",
unsave: bool = False,
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
duration: int = 0,
width: int = 0,
height: int = 0,
@@ -130,7 +130,6 @@ class SendAnimation(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(animation):
@@ -168,7 +167,7 @@ class SendAnimation(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/methods/messages/send_audio.py b/pyrogram/client/methods/messages/send_audio.py
index 7b218a66..5cd9fc8d 100644
--- a/pyrogram/client/methods/messages/send_audio.py
+++ b/pyrogram/client/methods/messages/send_audio.py
@@ -31,7 +31,7 @@ class SendAudio(BaseClient):
chat_id: Union[int, str],
audio: str,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
duration: int = 0,
performer: str = None,
title: str = None,
@@ -127,7 +127,6 @@ class SendAudio(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(audio):
@@ -163,7 +162,7 @@ class SendAudio(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/methods/messages/send_cached_media.py b/pyrogram/client/methods/messages/send_cached_media.py
index 99961ca1..1c5aad7b 100644
--- a/pyrogram/client/methods/messages/send_cached_media.py
+++ b/pyrogram/client/methods/messages/send_cached_media.py
@@ -29,7 +29,7 @@ class SendCachedMedia(BaseClient):
chat_id: Union[int, str],
file_id: str,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
disable_notification: bool = None,
reply_to_message_id: int = None,
reply_markup: Union[
@@ -79,7 +79,6 @@ class SendCachedMedia(BaseClient):
Raises:
RPCError: In case of a Telegram RPC error.
"""
- style = self.html if parse_mode.lower() == "html" else self.markdown
r = self.send(
functions.messages.SendMedia(
@@ -89,7 +88,7 @@ class SendCachedMedia(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
diff --git a/pyrogram/client/methods/messages/send_document.py b/pyrogram/client/methods/messages/send_document.py
index da012b2c..55ab53af 100644
--- a/pyrogram/client/methods/messages/send_document.py
+++ b/pyrogram/client/methods/messages/send_document.py
@@ -32,7 +32,7 @@ class SendDocument(BaseClient):
document: str,
thumb: str = None,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
disable_notification: bool = None,
reply_to_message_id: int = None,
reply_markup: Union[
@@ -113,7 +113,6 @@ class SendDocument(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(document):
@@ -144,7 +143,7 @@ class SendDocument(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/methods/messages/send_message.py b/pyrogram/client/methods/messages/send_message.py
index f8caa081..959cf9b9 100644
--- a/pyrogram/client/methods/messages/send_message.py
+++ b/pyrogram/client/methods/messages/send_message.py
@@ -28,7 +28,7 @@ class SendMessage(BaseClient):
self,
chat_id: Union[int, str],
text: str,
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
disable_web_page_preview: bool = None,
disable_notification: bool = None,
reply_to_message_id: int = None,
@@ -74,8 +74,7 @@ class SendMessage(BaseClient):
Raises:
RPCError: In case of a Telegram RPC error.
"""
- style = self.html if parse_mode.lower() == "html" else self.markdown
- message, entities = style.parse(text).values()
+ message, entities = self.parser.parse(text, parse_mode).values()
r = self.send(
functions.messages.SendMessage(
diff --git a/pyrogram/client/methods/messages/send_photo.py b/pyrogram/client/methods/messages/send_photo.py
index c1fd33d8..8ebb2761 100644
--- a/pyrogram/client/methods/messages/send_photo.py
+++ b/pyrogram/client/methods/messages/send_photo.py
@@ -31,7 +31,7 @@ class SendPhoto(BaseClient):
chat_id: Union[int, str],
photo: str,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
ttl_seconds: int = None,
disable_notification: bool = None,
reply_to_message_id: int = None,
@@ -112,7 +112,6 @@ class SendPhoto(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(photo):
@@ -139,7 +138,7 @@ class SendPhoto(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/methods/messages/send_video.py b/pyrogram/client/methods/messages/send_video.py
index 4e1201fc..0785056d 100644
--- a/pyrogram/client/methods/messages/send_video.py
+++ b/pyrogram/client/methods/messages/send_video.py
@@ -31,7 +31,7 @@ class SendVideo(BaseClient):
chat_id: Union[int, str],
video: str,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
duration: int = 0,
width: int = 0,
height: int = 0,
@@ -129,7 +129,6 @@ class SendVideo(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(video):
@@ -166,7 +165,7 @@ class SendVideo(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/methods/messages/send_voice.py b/pyrogram/client/methods/messages/send_voice.py
index 9dace1e0..45dfa45b 100644
--- a/pyrogram/client/methods/messages/send_voice.py
+++ b/pyrogram/client/methods/messages/send_voice.py
@@ -31,7 +31,7 @@ class SendVoice(BaseClient):
chat_id: Union[int, str],
voice: str,
caption: str = "",
- parse_mode: str = "",
+ parse_mode: Union[str, None] = "",
duration: int = 0,
disable_notification: bool = None,
reply_to_message_id: int = None,
@@ -110,7 +110,6 @@ class SendVoice(BaseClient):
RPCError: In case of a Telegram RPC error.
"""
file = None
- style = self.html if parse_mode.lower() == "html" else self.markdown
try:
if os.path.exists(voice):
@@ -142,7 +141,7 @@ class SendVoice(BaseClient):
reply_to_msg_id=reply_to_message_id,
random_id=self.rnd_id(),
reply_markup=reply_markup.write() if reply_markup else None,
- **style.parse(caption)
+ **self.parser.parse(caption, parse_mode)
)
)
except FilePartMissing as e:
diff --git a/pyrogram/client/types/input_message_content/input_text_message_content.py b/pyrogram/client/types/input_message_content/input_text_message_content.py
index 4b294aab..7db2069d 100644
--- a/pyrogram/client/types/input_message_content/input_text_message_content.py
+++ b/pyrogram/client/types/input_message_content/input_text_message_content.py
@@ -16,9 +16,11 @@
# You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see .
+from typing import Union
+
from pyrogram.api import types
from .input_message_content import InputMessageContent
-from ...style import HTML, Markdown
+from ...parser import Parser
class InputTextMessageContent(InputMessageContent):
@@ -38,7 +40,7 @@ class InputTextMessageContent(InputMessageContent):
__slots__ = ["message_text", "parse_mode", "disable_web_page_preview"]
- def __init__(self, message_text: str, parse_mode: str = "", disable_web_page_preview: bool = None):
+ def __init__(self, message_text: str, parse_mode: Union[str, None] = "", disable_web_page_preview: bool = None):
super().__init__()
self.message_text = message_text
@@ -49,5 +51,5 @@ class InputTextMessageContent(InputMessageContent):
return types.InputBotInlineMessageText(
no_webpage=self.disable_web_page_preview or None,
reply_markup=reply_markup.write() if reply_markup else None,
- **(HTML() if self.parse_mode.lower() == "html" else Markdown()).parse(self.message_text)
+ **(Parser(None)).parse(self.message_text, self.parse_mode)
)
diff --git a/pyrogram/client/types/messages_and_media/message.py b/pyrogram/client/types/messages_and_media/message.py
index 16726a47..549d6f09 100644
--- a/pyrogram/client/types/messages_and_media/message.py
+++ b/pyrogram/client/types/messages_and_media/message.py
@@ -31,7 +31,7 @@ from ..object import Object
from ..update import Update
from ..user_and_chats.chat import Chat
from ..user_and_chats.user import User
-from ...style import utils, Markdown, HTML
+from ...parser import utils, Parser
class Str(str):
@@ -47,11 +47,11 @@ class Str(str):
@property
def markdown(self):
- return Markdown.unparse(self, self.entities)
+ return Parser.unparse(self, self.entities, False)
@property
def html(self):
- return HTML.unparse(self, self.entities)
+ return Parser.unparse(self, self.entities, True)
def __getitem__(self, item):
return utils.remove_surrogates(utils.add_surrogates(self)[item])