diff --git a/bot/handlers/callbacks.py b/bot/handlers/callbacks.py index 34c0b23..5618b52 100644 --- a/bot/handlers/callbacks.py +++ b/bot/handlers/callbacks.py @@ -55,28 +55,34 @@ 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}") + # Сначала отвечаем на callback (обязательно!) + await query.answer() + # Потом обновляем состояние state.waiting_for_output_control = False state.continue_output = True # Удаляем сообщение с кнопками try: - await query.delete_message() - except Exception as e: - logger.warning(f"Не удалось удалить сообщение с кнопками: {e}") - await query.answer() + if state.output_wait_message: + await state.output_wait_message.delete() + except: + pass return elif callback == "cancel_output": # Пользователь нажал "Отменить" logger.info(f"callback cancel_output: user_id={user_id}") state = state_manager.get(user_id) + # Сначала отвечаем на callback (обязательно!) + await query.answer() + # Потом обновляем состояние state.waiting_for_output_control = False state.continue_output = False # Удаляем сообщение с кнопками try: - await query.delete_message() - except Exception as e: - logger.warning(f"Не удалось удалить сообщение с кнопками: {e}") - await query.answer() + if state.output_wait_message: + await state.output_wait_message.delete() + except: + pass return elif callback == "preset_menu":