#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Script untuk menguji bot Telegram khusus Terabox secara lokal.
"""

import os
import sys
import logging
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
from config import TOKEN
from terabox import extract_terabox_url, get_terabox_download_link

# Konfigurasi logging
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)
logger = logging.getLogger(__name__)

async def test_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """Mengirim pesan test saat perintah /test diterima."""
    await update.message.reply_text(
        "✅ Bot Terabox Downloader berfungsi dengan baik!\n\n"
        "Silakan kirim URL Terabox untuk diunduh.\n"
        "Contoh URL yang valid:\n"
        "- https://terabox.com/s/xxx\n"
        "- https://1024tera.com/s/xxx\n"
        "- https://4funbox.com/s/xxx"
    )

async def test_terabox_url(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """Menguji ekstraksi URL Terabox dan mendapatkan link download."""
    message_text = update.message.text
    
    # Ekstrak URL Terabox dari pesan
    terabox_url = extract_terabox_url(message_text)
    
    if not terabox_url:
        await update.message.reply_text("❌ URL Terabox tidak valid.")
        return
    
    # Kirim pesan sedang memproses
    progress_message = await update.message.reply_text("⏳ Sedang memproses URL Terabox... Mohon tunggu.")
    
    # Dapatkan link download dari Terabox
    file_data = get_terabox_download_link(terabox_url)
    
    if not file_data or not file_data.get("direct_link"):
        await progress_message.edit_text("❌ Gagal mendapatkan link download dari Terabox.")
        return
    
    # Dapatkan informasi file
    file_name = file_data.get("file_name", "terabox_file")
    direct_link = file_data.get("direct_link")
    file_size = file_data.get("size", "Unknown")
    
    await progress_message.edit_text(
        f"✅ Link download berhasil ditemukan!\n\n"
        f"📄 Nama file: {file_name}\n"
        f"📦 Ukuran: {file_size}\n"
        f"🔗 Link: {direct_link}\n\n"
        f"Test berhasil! Bot siap digunakan."
    )

def main() -> None:
    """Fungsi utama untuk menjalankan bot test."""
    # Buat aplikasi
    application = Application.builder().token(TOKEN).build()

    # Tambahkan handler test
    application.add_handler(CommandHandler("test", test_command))
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, test_terabox_url))
    
    # Jalankan bot
    logger.info("Bot test Terabox dimulai. Tekan Ctrl+C untuk berhenti.")
    application.run_polling(allowed_updates=Update.ALL_TYPES)

if __name__ == '__main__':
    main()
