diff --git a/src/handlers.py b/src/handlers.py index c181e1b..db97f8a 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -46,11 +46,9 @@ NO_MORE_SCENARIOS_TEXT = """📭 Пока нет доступных сценар FIRST_REPLICA_INSTRUCTIONS = """🎙 Начинаем запись дорожки! -Отправляйте голосовые сообщения с озвучкой реплик. Говорите чётко и естественно. +Отправляйте голосовые сообщения с озвучкой реплик. Говорите чётко и естественно.""" -📝 Реплика 1:""" - -SHOW_REPLICA_TEXT = "📝 Реплика {num}:" +SHOW_REPLICA_TEXT = "📝 Реплика {num}/{total}:" CONFIRM_RESTART_TEXT = """⚠️ Вы уверены, что хотите начать заново? @@ -66,7 +64,7 @@ INVALID_INPUT_TEXT = "❌ Пожалуйста, отправьте голосо ASK_REPLICA_NUMBER_TEXT = "🔢 Введите номер реплики для перезаписи (1-{max}):" -REPEAT_REPLICA_TEXT = "🔄 Перезапись реплики {num}:" +REPEAT_REPLICA_TEXT = "🔄 Перезапись реплики {num}/{total}:" # === Клавиатуры === @@ -249,10 +247,19 @@ def get_track_length(scenario_id: str, speaker_id: int) -> int: def format_replica_message(session: UserSession) -> str: """Форматирует сообщение с репликой.""" replica_text = get_current_replica_text(session) - header = SHOW_REPLICA_TEXT.format(num=session.replica_index + 1) + total = get_track_length(session.scenario_id, session.speaker_id) + header = SHOW_REPLICA_TEXT.format(num=session.replica_index + 1, total=total) return f"{header}\n\n{replica_text}" +def format_first_replica(session: UserSession) -> str: + """Форматирует сообщение с первой репликой и инструкциями.""" + replica_text = get_current_replica_text(session) + total = get_track_length(session.scenario_id, session.speaker_id) + header = SHOW_REPLICA_TEXT.format(num=1, total=total) + return f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{header}\n\n{replica_text}" + + def format_admin_stats() -> str: """Форматирует статистику для админки.""" from src.audio import format_duration @@ -347,8 +354,7 @@ async def handle_accept_intro( session.scenario_id = scenario_id session.speaker_id = speaker_id session.replica_index = 0 - replica_text = get_current_replica_text(session) - await query.edit_message_text(f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}") + await query.edit_message_text(format_first_replica(session)) logger.info(f"User {user.id} started track {scenario_id}/{speaker_id}") session.last_bot_message_id = query.message.message_id @@ -367,8 +373,7 @@ async def handle_rerecord_previous( if session.replica_index == 0: session.state = UserState.FIRST_REPLICA - replica_text = get_current_replica_text(session) - await query.edit_message_text(f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}") + await query.edit_message_text(format_first_replica(session)) else: text = format_replica_message(session) await query.edit_message_text(text, reply_markup=get_show_replica_keyboard()) @@ -408,8 +413,7 @@ async def handle_confirm_restart( session.state = UserState.FIRST_REPLICA session.replica_index = 0 - replica_text = get_current_replica_text(session) - await query.edit_message_text(f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}") + await query.edit_message_text(format_first_replica(session)) session.last_bot_message_id = query.message.message_id upsert_user_session(session) logger.info( @@ -476,10 +480,8 @@ async def handle_save_track( session.scenario_id = scenario_id session.speaker_id = speaker_id session.replica_index = 0 - replica_text = get_current_replica_text(session) - await query.edit_message_text( - f"{thanks_msg}\n\n{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}" - ) + first_replica_msg = format_first_replica(session) + await query.edit_message_text(f"{thanks_msg}\n\n{first_replica_msg}") logger.info( f"User {user.id} saved track, started new: {scenario_id}/{speaker_id}" ) @@ -560,8 +562,7 @@ async def handle_exit_admin( elif session.state == UserState.NO_MORE_SCENARIOS: await query.edit_message_text(NO_MORE_SCENARIOS_TEXT) elif session.state == UserState.FIRST_REPLICA: - replica_text = get_current_replica_text(session) - await query.edit_message_text(f"{FIRST_REPLICA_INSTRUCTIONS}\n\n{replica_text}") + await query.edit_message_text(format_first_replica(session)) elif session.state == UserState.SHOW_REPLICA: text = format_replica_message(session) await query.edit_message_text(text, reply_markup=get_show_replica_keyboard()) @@ -623,10 +624,9 @@ async def handle_confirm_upload( 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}" + f"{format_first_replica(waiting_session)}" ) await context.bot.send_message(row[0], msg) except Exception: @@ -897,11 +897,12 @@ async def handle_replica_number_input( session.state = UserState.REPEAT_REPLICA session.replica_index = num - 1 replica_text = get_current_replica_text(session) + total = get_track_length(session.scenario_id, session.speaker_id) msg_id = await send_message_and_save( update, context, session, - f"{REPEAT_REPLICA_TEXT.format(num=num)}\n\n{replica_text}", + f"{REPEAT_REPLICA_TEXT.format(num=num, total=total)}\n\n{replica_text}", ) session.last_bot_message_id = msg_id upsert_user_session(session)