From 42e1043f280265cf6c227391dacdb59a670ad7d7 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Fri, 27 Feb 2026 19:55:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Qwen-Coder --- bot/handlers/callbacks.py | 16 ++++++++++++---- bot/utils/formatters.py | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/bot/handlers/callbacks.py b/bot/handlers/callbacks.py index d38155d..8ca419d 100644 --- a/bot/handlers/callbacks.py +++ b/bot/handlers/callbacks.py @@ -54,32 +54,40 @@ async def menu_callback(update: Update, context: ContextTypes.DEFAULT_TYPE): # Пользователь нажал "Продолжить" remaining = int(callback.replace("continue_output_", "")) state = state_manager.get(user_id) + logger.info(f"callback continue_output_{remaining}: user_id={user_id}") state.waiting_for_output_control = False state.continue_output = True # Удаляем сообщение с кнопками try: await query.delete_message() - except: - pass + except Exception as e: + logger.warning(f"Не удалось удалить сообщение с кнопками: {e}") # Устанавливаем event чтобы разблокировать send_long_message if state.output_continue_event: + logger.info("callback: устанавливаем continue_event") state.output_continue_event.set() + else: + logger.warning("callback: output_continue_event не найден!") await query.answer() return elif callback == "cancel_output": # Пользователь нажал "Отменить" + logger.info(f"callback cancel_output: user_id={user_id}") state = state_manager.get(user_id) state.waiting_for_output_control = False state.continue_output = False # Удаляем сообщение с кнопками try: await query.delete_message() - except: - pass + except Exception as e: + logger.warning(f"Не удалось удалить сообщение с кнопками: {e}") # Устанавливаем event чтобы разблокировать send_long_message if state.output_continue_event: + logger.info("callback: устанавливаем continue_event (отмена)") state.output_continue_event.set() + else: + logger.warning("callback: output_continue_event не найден!") await query.answer() return diff --git a/bot/utils/formatters.py b/bot/utils/formatters.py index 4ce9842..632d2e9 100644 --- a/bot/utils/formatters.py +++ b/bot/utils/formatters.py @@ -245,9 +245,13 @@ async def send_long_message(update: Update, text: str, parse_mode: str = None, p state.output_wait_message = wait_msg state.output_continue_event = continue_event + logger.info(f"send_long_message: ждём нажатия кнопки (user_id={user_id}, remaining={remaining})") + # Ждём пока callback handler не установит event await continue_event.wait() + logger.info(f"send_long_message: кнопка нажата, continue_output={state.continue_output}") + # Пользователь ответил if state.continue_output: # Продолжаем - удаляем кнопки