Описание текущей работы бота
Бот работает по следующему принципу: пользователь отправляет ссылку на видео YouTube, бот запускает задачу (с использованием yt-dlp) для получения информации о видео. На основе полученных данных формируются кнопки с доступными качествами. После нажатия кнопки запускается скачивание: если выбранный видеоформат содержит звук, он скачивается напрямую, если без звука - докачивается лучший аудиопоток и производится склейка. Готовый файл временно сохраняется на сервере, затем отправляется пользователю. Telegram возвращает file_id, который сохраняется в кэше Redis. При повторном запросе того же видео в том же качестве бот использует file_id и не скачивает файл заново. Прямо сейчас в указанном механизме происходит постоянная ошибка, файлы из YouTube не выдаются.
Что нужно сделать
Проинспектировать указанный код (предоставляется отдельно) и исправить все причины ошибок, в результате которых бот:
- не отправляет видео пользователю;
- выбрасывает исключения при обработке ссылок или нажатии кнопок выбора качества;
- некорректно обрабатывает формат video+audio (склейка);
- не собирает file_id или некорректно работает кэш.
Технологический стек
- Python 3.13+
- aiogram
- yt-dlp
- Redis (через aioredis или redis-py)
- возможно использование Celery и Docker
Формат результата
Предоставить исправленный бот (скрипты) с чётко задокументированными внесёнными правками. В плане кода - ожидается, что кэширование работает стабильно и основная функция (скачка видео из YouTube по ссылке) выполняется без сбоев.