feat: auto-transition users from NO_MORE_SCENARIOS to FIRST_REPLICA
При загрузке нового сценария пользователи в состоянии NO_MORE_SCENARIOS теперь автоматически переходят в FIRST_REPLICA с выводом первой реплики, вместо получения сообщения "используйте /start".
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user