import logging from aiogram import Dispatcher, Bot from aiogram.filters import Command from models.state import BotState from .dowmp4 import download_mp4_to_dropbox logger = logging.getLogger(__name__) def register_handlers(dp: Dispatcher, state: BotState, bot: Bot): @dp.message(Command("dowmp4")) # @admin_required(4) async def dowmp4_handler(message): """Обработчик команды /dowmp4""" try: url = message.text.split(" ", 1)[1].strip() except IndexError: await message.answer("Пожалуйста, укажите URL видео после команды /dowmp4") return processing_msg = await message.answer( "⏳ Начинаю обработку видео... Это может занять несколько минут." ) try: # Скачиваем и загружаем в Dropbox public_url, metadata = await download_mp4_to_dropbox(url) # Форматируем информацию о видео duration_str = f"{int(metadata['duration'] // 60)}:{int(metadata['duration'] % 60):02d}" size_mb = f"{metadata['filesize'] / (1024 * 1024):.1f} MB" caption = ( f"🎥 **{metadata.get('title', 'Видео')}**\n" f"👤 **Автор:** {metadata.get('uploader', 'Неизвестен')}\n" f"⏱ **Длительность:** {duration_str}\n" f"📦 **Размер:** {size_mb}\n" f"🔗 **Ссылка:** [Скачать]({public_url})" ) await processing_msg.delete() # Удаляем сообщение о обработке await message.answer( f"✅ **Видео успешно обработано!**\n\n{caption}", parse_mode="Markdown", disable_web_page_preview=True, ) except ValueError as e: await message.answer(f"❌ Ошибка: {str(e)}") except Exception as e: logger.error(f"Ошибка при обработке /dowmp4: {e}", exc_info=True) await message.answer( "❌ Произошла ошибка при обработке видео. Попробуйте позже." )