From 007d700a8e2ab7509c1881742a6c6a3b346331e5 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Mon, 2 Feb 2026 23:02:15 +0300 Subject: [PATCH] feat: auto-transition users from NO_MORE_SCENARIOS to FIRST_REPLICA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit При загрузке нового сценария пользователи в состоянии NO_MORE_SCENARIOS теперь автоматически переходят в FIRST_REPLICA с выводом первой реплики, вместо получения сообщения "используйте /start". --- src/handlers.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/handlers.py b/src/handlers.py index 5de0883..9b8e1ee 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -581,7 +581,7 @@ async def handle_confirm_upload( del context.user_data["pending_scenario"] - # Уведомляем пользователей в NO_MORE_SCENARIOS + # Уведомляем и переводим пользователей в NO_MORE_SCENARIOS на новый сценарий for waiting_user_id in get_users_in_state(UserState.NO_MORE_SCENARIOS): try: with get_connection() as conn: @@ -589,8 +589,23 @@ async def handle_confirm_upload( "SELECT telegram_id FROM users WHERE id = ?", (waiting_user_id,) ).fetchone() if row: - msg = "🎉 Появился новый сценарий! Используйте /start" - await context.bot.send_message(row[0], msg) + waiting_session = get_user_session(waiting_user_id) + if waiting_session: + track = find_available_track(waiting_user_id) + if track: + scenario_id, speaker_id = track + waiting_session.state = UserState.FIRST_REPLICA + waiting_session.scenario_id = scenario_id + waiting_session.speaker_id = speaker_id + waiting_session.replica_index = 0 + upsert_user_session(waiting_session) + + replica_text = get_current_replica_text(waiting_session) + msg = ( + f"🎉 Появился новый сценарий!\n\n" + f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}" + ) + await context.bot.send_message(row[0], msg) except Exception: pass