feat: add polish and fallback handlers
- Add fallback handler for unexpected text messages - Remove unused require_states alias - Update TASK.md - all stages complete
This commit is contained in:
@@ -630,11 +630,13 @@ async def handle_voice_message(
|
||||
|
||||
|
||||
@with_user_and_session
|
||||
@require_state(UserState.ASK_REPLICA_NUMBER)
|
||||
async def handle_replica_number_input(
|
||||
update: Update, context: ContextTypes.DEFAULT_TYPE, user: User, session: UserSession
|
||||
update: Update, context: ContextTypes.DEFAULT_TYPE, user: User, session: UserSession | None
|
||||
) -> 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)
|
||||
|
||||
@@ -703,3 +705,24 @@ async def handle_admin_document(
|
||||
)
|
||||
session.last_bot_message_id = msg_id
|
||||
upsert_user_session(session)
|
||||
|
||||
|
||||
# === Fallback handlers ===
|
||||
|
||||
|
||||
VOICE_EXPECTED_TEXT = "❌ Пожалуйста, отправьте голосовое сообщение с озвучкой реплики."
|
||||
|
||||
|
||||
@with_user_and_session
|
||||
async def handle_unexpected_text(
|
||||
update: Update, context: ContextTypes.DEFAULT_TYPE, user: User, session: UserSession | None
|
||||
) -> None:
|
||||
"""Обработчик неожиданных текстовых сообщений."""
|
||||
if not session:
|
||||
await update.message.reply_text("Используйте /start для начала работы с ботом.")
|
||||
return
|
||||
|
||||
voice_states = {UserState.FIRST_REPLICA, UserState.SHOW_REPLICA, UserState.REPEAT_REPLICA}
|
||||
if session.state in voice_states:
|
||||
await update.message.reply_text(VOICE_EXPECTED_TEXT)
|
||||
# В других состояниях игнорируем текст (например, INTRO, NO_MORE_SCENARIOS)
|
||||
|
||||
Reference in New Issue
Block a user