Починил редактирование по номеру
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user