From a3fd7baa6a340db7ef06b8d0f9a5ec2a43e79232 Mon Sep 17 00:00:00 2001 From: NikitolProject Date: Sun, 27 Apr 2025 07:02:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20=D1=8D?= =?UTF-8?q?=D0=BA=D1=80=D0=B0=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20Markdown:=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C?= =?UTF-8?q?=20=D0=BE=D0=BD=D0=B0=20=D0=BD=D0=B5=20=D1=8D=D0=BA=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=80=D1=83=D0=B5=D1=82=20=D1=81=D0=B8=D0=BC=D0=B2?= =?UTF-8?q?=D0=BE=D0=BB=D1=8B,=20=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D1=8F=20=D0=BE=D1=80=D0=B8=D0=B3=D0=B8=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82?= =?UTF-8?q?=20=D0=98=D0=98.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 43 ++----------------------------------------- 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/bot.py b/bot.py index c3f3f0a..ddee4fe 100644 --- a/bot.py +++ b/bot.py @@ -155,47 +155,8 @@ async def keep_typing(chat_id: int): def escape_markdown(text: str) -> str: - """Экранирует специальные символы Markdown, если они не являются частью форматирования""" - # Регулярное выражение для поиска уже отформатированного текста - md_patterns = [ - r'`[^`]+`', # Код - r'\*\*[^*]+\*\*', # Жирный - r'\*[^*]+\*', # Курсив - r'_[^_]+_', # Курсив (альтернативный) - r'__[^_]+__', # Жирный (альтернативный) - r'\[[^\]]+\]\([^)]+\)', # Ссылки - ] - - # Собираем все совпадения с шаблонами - matches = [] - for pattern in md_patterns: - matches.extend([(m.start(), m.end()) for m in re.finditer(pattern, text)]) - - # Сортируем по началу совпадения - matches.sort() - - # Если нет совпадений, просто экранируем все специальные символы - if not matches: - return re.sub(r'([_*\[\]()~`>#+-=|{}.!\\])', r'\\\1', text) - - # Иначе экранируем только те символы, которые не входят в уже отформатированный текст - result = "" - last_pos = 0 - - for start, end in matches: - # Экранируем символы до начала форматирования - if start > last_pos: - result += re.sub(r'([_*\[\]()~`>#+-=|{}.!\\])', r'\\\1', text[last_pos:start]) - - # Добавляем отформатированный текст без изменений - result += text[start:end] - last_pos = end - - # Экранируем символы после последнего форматирования - if last_pos < len(text): - result += re.sub(r'([_*\[\]()~`>#+-=|{}.!\\])', r'\\\1', text[last_pos:]) - - return result + """Не экранирует символы, оставляя оригинальное форматирование от ИИ""" + return text @dp.message(Command("start"))