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"))