← Voltar

link_handler.py

from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import ContextTypes
import uuid

from utils.regex import is_youtube, is_instagram, is_facebook, is_tiktok

from handlers.youtube_audio_handler import process_youtube_audio
from handlers.youtube_video_handler import process_youtube_video
from handlers.instagram_handler import process_instagram
from handlers.facebook_handler import process_facebook
from handlers.tiktok_handler import process_tiktok


async def handle_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
    text = update.message.text
    mode = context.user_data.get("mode")

    # Se já escolheu no /start
    if mode == "yt_audio":
        context.user_data["mode"] = None
        return await process_youtube_audio(update, context)

    if mode == "yt_video":
        context.user_data["mode"] = None
        return await process_youtube_video(update, context)

    # Auto-detecção YouTube
    if is_youtube(text):
        unique_id = str(uuid.uuid4())
        context.user_data[f"youtube_url_{unique_id}"] = text

        keyboard = [
            [InlineKeyboardButton("🎵 Áudio", callback_data=f"yt_audio_choice:{unique_id}")],
            [InlineKeyboardButton("🎬 Vídeo", callback_data=f"yt_video_choice:{unique_id}")],
        ]

        await update.message.reply_text(
            "Link do YouTube detectado. Escolha o formato:",
            reply_markup=InlineKeyboardMarkup(keyboard)
        )
        return

    # Outros serviços
    if is_instagram(text):
        return await process_instagram(update, context)

    if is_facebook(text):
        return await process_facebook(update, context)

    if is_tiktok(text):
        return await process_tiktok(update, context)

    return await update.message.reply_text(
        "❌ Link inválido. Envie um link do YouTube, Instagram, Facebook ou TikTok."
    )