diff --git a/app/bot.py b/app/bot.py index 3ab3813..ece90a8 100644 --- a/app/bot.py +++ b/app/bot.py @@ -21,6 +21,7 @@ logger = logging.getLogger(__name__) USER_TOKEN = os.environ['USER_BOT_TOKEN'] ADMIN_TOKEN = os.environ['ADMIN_BOT_TOKEN'] TTS_VOICE = os.environ.get('TTS_VOICE', 'ru-RU-DmitryNeural') +TTS_TIMEOUT = int(os.environ.get('TTS_TIMEOUT', '30')) DATA_DIR = os.environ.get('DATA_DIR', '/app/data') os.makedirs(DATA_DIR, exist_ok=True) @@ -160,7 +161,14 @@ async def handle_user_message(update: Update, context): try: communicate = edge_tts.Communicate(text, voice=TTS_VOICE) - await communicate.save(tmp_path) + try: + await asyncio.wait_for(communicate.save(tmp_path), timeout=TTS_TIMEOUT) + except asyncio.TimeoutError: + logger.error(f"TTS timed out after {TTS_TIMEOUT}s for user {user.id}") + await update.message.reply_text( + '⚠️ Сервис озвучки не отвечает. Попробуй ещё раз через минуту.' + ) + return # ── 1. Send voice back to user ── duration = get_ogg_duration(tmp_path)