Skip to content

Commit fed8cbf

Browse files
committed
Add new set_parse_mode utility method
1 parent e1197e0 commit fed8cbf

20 files changed

+109
-19
lines changed

compiler/docs/compiler.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def get_title_list(s: str) -> list:
136136
remove_handler
137137
stop_transmission
138138
export_session_string
139+
set_parse_mode
139140
""",
140141
messages="""
141142
Messages

pyrogram/client/client.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,84 @@ def stop_transmission(self):
491491
"""
492492
raise Client.StopTransmission
493493

494+
def export_session_string(self):
495+
"""Export the current authorized session as a serialized string.
496+
497+
Session strings are useful for storing in-memory authorized sessions in a portable, serialized string.
498+
More detailed information about session strings can be found at the dedicated page of
499+
:doc:`Storage Engines <../../topics/storage-engines>`.
500+
501+
Has no parameters.
502+
503+
Returns:
504+
``str``: The session serialized into a printable, url-safe string.
505+
506+
Example:
507+
.. code-block:: python
508+
:emphasize-lines: 6
509+
510+
from pyrogram import Client
511+
512+
app = Client("my_account")
513+
514+
with app:
515+
print(app.export_session_string())
516+
"""
517+
return self.storage.export_session_string()
518+
519+
def set_parse_mode(self, parse_mode: Union[str, None] = "combined"):
520+
"""Set the parse mode to be used globally by the client.
521+
522+
When setting the parse mode with this method, all methods having a *parse_mode* parameter will follow the global
523+
value by default. The default value *"combined"* enables both Markdown and HTML styles to be used and combined
524+
together.
525+
526+
Parameters:
527+
parse_mode (``str``):
528+
The new parse mode, can be any of: *"combined"*, for the default combined mode. *"markdown"* or *"md"*
529+
to force Markdown-only styles. *"html"* to force HTML-only styles. *None* to disable the parser
530+
completely.
531+
532+
Raises:
533+
ValueError: In case the provided *parse_mode* is not a valid parse mode.
534+
535+
Example:
536+
.. code-block:: python
537+
:emphasize-lines: 10,14,18,22
538+
539+
from pyrogram import Client
540+
541+
app = Client("my_account")
542+
543+
with app:
544+
# Default combined mode: Markdown + HTML
545+
app.send_message("haskell", "1. **markdown** and <i>html</i>")
546+
547+
# Force Markdown-only, HTML is disabled
548+
app.set_parse_mode("markdown")
549+
app.send_message("haskell", "2. **markdown** and <i>html</i>")
550+
551+
# Force HTML-only, Markdown is disabled
552+
app.set_parse_mode("html")
553+
app.send_message("haskell", "3. **markdown** and <i>html</i>")
554+
555+
# Disable the parser completely
556+
app.set_parse_mode(None)
557+
app.send_message("haskell", "4. **markdown** and <i>html</i>")
558+
559+
# Bring back the default combined mode
560+
app.set_parse_mode()
561+
app.send_message("haskell", "5. **markdown** and <i>html</i>")
562+
"""
563+
564+
if parse_mode not in self.PARSE_MODES:
565+
raise ValueError('parse_mode must be one of {} or None. Not "{}"'.format(
566+
", ".join('"{}"'.format(m) for m in self.PARSE_MODES[:-1]),
567+
parse_mode
568+
))
569+
570+
self.parse_mode = parse_mode
571+
494572
def authorize_bot(self):
495573
try:
496574
r = self.send(

pyrogram/client/ext/base_client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ class StopTransmission(StopIteration):
5959
WORKDIR = PARENT_DIR
6060
CONFIG_FILE = PARENT_DIR / "config.ini"
6161

62+
PARSE_MODES = ["combined", "markdown", "md", "html", None]
63+
6264
MEDIA_TYPE_ID = {
6365
0: "photo_thumbnail",
6466
1: "chat_photo",
@@ -93,6 +95,7 @@ def __init__(self):
9395
self.rnd_id = MsgId
9496

9597
self.parser = Parser(self)
98+
self.parse_mode = "combined"
9699

97100
self.session = None
98101
self.media_sessions = {}

pyrogram/client/methods/messages/edit_inline_text.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def edit_inline_text(
2828
self,
2929
inline_message_id: str,
3030
text: str,
31-
parse_mode: Union[str, None] = "",
31+
parse_mode: Union[str, None] = object,
3232
disable_web_page_preview: bool = None,
3333
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
3434
) -> bool:

pyrogram/client/methods/messages/edit_message_text.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def edit_message_text(
2929
chat_id: Union[int, str],
3030
message_id: int,
3131
text: str,
32-
parse_mode: Union[str, None] = "",
32+
parse_mode: Union[str, None] = object,
3333
disable_web_page_preview: bool = None,
3434
reply_markup: "pyrogram.InlineKeyboardMarkup" = None
3535
) -> "pyrogram.Message":

pyrogram/client/methods/messages/send_animation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def send_animation(
3232
animation: str,
3333
caption: str = "",
3434
unsave: bool = False,
35-
parse_mode: Union[str, None] = "",
35+
parse_mode: Union[str, None] = object,
3636
duration: int = 0,
3737
width: int = 0,
3838
height: int = 0,

pyrogram/client/methods/messages/send_audio.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def send_audio(
3131
chat_id: Union[int, str],
3232
audio: str,
3333
caption: str = "",
34-
parse_mode: Union[str, None] = "",
34+
parse_mode: Union[str, None] = object,
3535
duration: int = 0,
3636
performer: str = None,
3737
title: str = None,

pyrogram/client/methods/messages/send_cached_media.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def send_cached_media(
2929
chat_id: Union[int, str],
3030
file_id: str,
3131
caption: str = "",
32-
parse_mode: Union[str, None] = "",
32+
parse_mode: Union[str, None] = object,
3333
disable_notification: bool = None,
3434
reply_to_message_id: int = None,
3535
reply_markup: Union[

pyrogram/client/methods/messages/send_document.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def send_document(
3232
document: str,
3333
thumb: str = None,
3434
caption: str = "",
35-
parse_mode: Union[str, None] = "",
35+
parse_mode: Union[str, None] = object,
3636
disable_notification: bool = None,
3737
reply_to_message_id: int = None,
3838
reply_markup: Union[

pyrogram/client/methods/messages/send_message.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def send_message(
2828
self,
2929
chat_id: Union[int, str],
3030
text: str,
31-
parse_mode: Union[str, None] = "",
31+
parse_mode: Union[str, None] = object,
3232
disable_web_page_preview: bool = None,
3333
disable_notification: bool = None,
3434
reply_to_message_id: int = None,

0 commit comments

Comments
 (0)