From 2557440a39e957a71f54539ae564a7f503e97647 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Fri, 27 Feb 2026 18:26:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B5?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5?= =?UTF-8?q?=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D0=B2=D0=B0=D1=8E=D1=89=D0=B5?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B0=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Qwen-Coder --- bot/utils/formatters.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/bot/utils/formatters.py b/bot/utils/formatters.py index cf16efb..69ce7ca 100644 --- a/bot/utils/formatters.py +++ b/bot/utils/formatters.py @@ -190,28 +190,27 @@ async def send_long_message(update: Update, text: str, parse_mode: str = None, p wait_msg = None for i, (part, has_code, code_opened, code_closed) in enumerate(parts): - # Добавляем номер части если их несколько - if total > 1: - header = f"({i+1}/{total}) " - if len(header) + len(part) <= MAX_MESSAGE_LENGTH: - part = header + part - # Определяем parse_mode для этого сообщения actual_parse_mode = parse_mode if parse_mode and has_code else None # Логика работы с блоками кода между сообщениями: - # - Если предыдущее сообщение не закрыло блок (code_closed=False) и имело код — открываем в этом - # - Если текущее сообщение не закрывает блок (code_closed=False) и следующее имеет код — не закрываем + # - Если предыдущее сообщение не закрыло блок — открываем в этом + # - Если текущее не закрывает блок и следующее не имеет кода — закрываем if total > 1 and actual_parse_mode and has_code: # Проверяем нужно ли открыть блок в начале этого сообщения if i > 0 and not parts[i-1][3]: # предыдущее не закрыло блок (parts[i-1][3] = code_closed) part = "```\n" + part # Проверяем нужно ли закрыть блок в конце этого сообщения - # Закрываем только если следующее сообщение НЕ имеет кода if i < total - 1 and not code_closed and not parts[i+1][1]: # следующее не имеет кода part = part + "\n```" + # Добавляем номер части ПОСЛЕ работы с блоками кода + if total > 1: + header = f"({i+1}/{total}) " + if len(header) + len(part) <= MAX_MESSAGE_LENGTH: + part = header + part + try: await update.message.reply_text(part, parse_mode=actual_parse_mode) except Exception as e: