Прогресс

This commit is contained in:
2026-02-03 10:40:53 +03:00
parent 011f7be20f
commit d7f3c8c6f1

View File

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