Починил редактирование по номеру

This commit is contained in:
2026-02-09 09:56:00 +03:00
parent efe99e9a4a
commit 948df7f19c
2 changed files with 31 additions and 25 deletions

View File

@@ -323,16 +323,13 @@ async def admin_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> N
# === Callback handlers ===
@with_user_and_session
async def handle_accept_intro(
update: Update,
context: ContextTypes.DEFAULT_TYPE,
user: User,
session: UserSession | None,
session: UserSession,
) -> None:
"""Обработчик согласия с условиями."""
if not session or session.state != UserState.INTRO:
return # Пропускаем, следующий обработчик обработает
text = update.message.text.strip()
@@ -911,16 +908,13 @@ async def handle_voice_message(
upsert_user_session(session)
@with_user_and_session
async def handle_replica_number_input(
update: Update,
context: ContextTypes.DEFAULT_TYPE,
user: User,
session: UserSession | None,
session: UserSession,
) -> None:
"""Обработчик ввода номера реплики."""
if not session or session.state != UserState.ASK_REPLICA_NUMBER:
return # Пропускаем, fallback обработает
text = update.message.text.strip()
track_length = get_track_length(session.scenario_id, session.speaker_id)
@@ -947,6 +941,32 @@ async def handle_replica_number_input(
upsert_user_session(session)
@with_user_and_session
async def handle_text_message(
update: Update,
context: ContextTypes.DEFAULT_TYPE,
user: User,
session: UserSession | None,
) -> None:
"""Диспетчер для всех текстовых сообщений."""
if not session:
await update.message.reply_text("Используйте /start для начала работы с ботом.")
return
# INTRO - ожидание согласия
if session.state == UserState.INTRO:
await handle_accept_intro(update, context, user, session)
return
# ASK_REPLICA_NUMBER - ввод номера реплики
if session.state == UserState.ASK_REPLICA_NUMBER:
await handle_replica_number_input(update, context, user, session)
return
# Для остальных состояний - обработка неожиданного текста
await handle_unexpected_text(update, context, user, session)
@with_user_and_session
@require_state(UserState.ADMIN)
async def handle_admin_document(
@@ -996,17 +1016,13 @@ async def handle_admin_document(
# === Fallback handlers ===
@with_user_and_session
async def handle_unexpected_text(
update: Update,
context: ContextTypes.DEFAULT_TYPE,
user: User,
session: UserSession | None,
session: UserSession,
) -> None:
"""Обработчик неожиданных текстовых сообщений."""
if not session:
await update.message.reply_text("Используйте /start для начала работы с ботом.")
return
voice_states = {
UserState.FIRST_REPLICA,