Версия 1.0
This commit is contained in:
36
BotCode/utils/md2_escape.py
Normal file
36
BotCode/utils/md2_escape.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# BotCode/utils/md2_escape.py
|
||||
from BotCode.config import PARSE_MODE
|
||||
|
||||
# Настройка экспорта в модули
|
||||
__all__ = ("textmd2",)
|
||||
|
||||
def textmd2(msg: str,
|
||||
parse_mode: str = PARSE_MODE,
|
||||
special_chars: str = r"_*[]()~`>#+-=|{}.!") -> str:
|
||||
"""
|
||||
Экранирует специальные символы MarkdownV2 в переданном тексте.
|
||||
|
||||
:param msg: Входной текст в виде строки.
|
||||
:param parse_mode: Формат форматирования ('MarkdownV2' или 'HTML').
|
||||
:param special_chars: Символы, которые необходимо экранировать.
|
||||
|
||||
:return: Экранированный текст или исходный текст, если формат HTML.
|
||||
:raises TypeError: Если передан не строковый тип данных.
|
||||
:raises ValueError: Если parse_mode задан некорректно.
|
||||
"""
|
||||
from re import sub, escape
|
||||
|
||||
if not isinstance(msg, str):
|
||||
raise TypeError(f"Ожидается строка, но получено {type(msg).__name__}")
|
||||
|
||||
if not isinstance(parse_mode, str):
|
||||
raise TypeError(f"parse_mode должен быть строкой, но получено {type(parse_mode).__name__}")
|
||||
|
||||
if parse_mode.strip().lower() == "html":
|
||||
return msg
|
||||
|
||||
elif parse_mode in {"markdownv2", "markdown"}:
|
||||
return sub(rf"([{escape(special_chars)}])", r"\\\1", msg)
|
||||
|
||||
else:
|
||||
raise ValueError(f"Недопустимое значение parse_mode: '{parse_mode}'. Ожидалось 'HTML' или 'MarkdownV2'")
|
||||
Reference in New Issue
Block a user