feat: auto-transition users from NO_MORE_SCENARIOS to FIRST_REPLICA

При загрузке нового сценария пользователи в состоянии NO_MORE_SCENARIOS
теперь автоматически переходят в FIRST_REPLICA с выводом первой реплики,
вместо получения сообщения "используйте /start".
This commit is contained in:
2026-02-02 23:02:15 +03:00
parent 0ae290c81f
commit 007d700a8e

View File

@@ -581,7 +581,7 @@ async def handle_confirm_upload(
del context.user_data["pending_scenario"] 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): for waiting_user_id in get_users_in_state(UserState.NO_MORE_SCENARIOS):
try: try:
with get_connection() as conn: with get_connection() as conn:
@@ -589,7 +589,22 @@ async def handle_confirm_upload(
"SELECT telegram_id FROM users WHERE id = ?", (waiting_user_id,) "SELECT telegram_id FROM users WHERE id = ?", (waiting_user_id,)
).fetchone() ).fetchone()
if row: if row:
msg = "🎉 Появился новый сценарий! Используйте /start" 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) await context.bot.send_message(row[0], msg)
except Exception: except Exception:
pass pass