import telebot
import os
import time
from datetime import datetime
import threading
import logging

# ==================== تنظیمات ====================
TOKEN = "8953616083:AAHjS9HMaS0QGyJhsj8_uUvmDflaUAovMAU"

# نام پوشه‌ای که ویدیوها در آن ذخیره می‌شوند (باید در public_html باشد یا زیرمجموعه آن)
SAVE_DIR = "videos"

# دامنه سایتت روی cPanel (حتما تغییر بده)
DOMAIN = "example.com"   # ←←← اینجا دامنه خودت را بنویس

# ================================================

bot = telebot.TeleBot(TOKEN)

# ایجاد پوشه اگر وجود نداشته باشد
if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

# لاگ‌گیری
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def get_unique_filename(file_id, original_name=None):
    ext = ".mp4"
    if original_name and "." in original_name:
        ext = os.path.splitext(original_name)[1]
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    return f"{file_id}_{timestamp}{ext}"

def delete_file_after_delay(file_path, delay_seconds=86400):
    """حذف فایل بعد از ۲۴ ساعت"""
    def delete():
        try:
            if os.path.exists(file_path):
                os.remove(file_path)
                logging.info(f"فایل پاک شد: {file_path}")
        except Exception as e:
            logging.error(f"خطا در حذف فایل {file_path}: {e}")
    
    timer = threading.Timer(delay_seconds, delete)
    timer.start()

@bot.message_handler(content_types=['video'])
def handle_video(message):
    try:
        video = message.video
        file_id = video.file_id
        
        # دریافت اطلاعات فایل
        file_info = bot.get_file(file_id)
        
        # نام فایل
        original_name = getattr(video, 'file_name', None)
        file_name = get_unique_filename(file_id, original_name)
        file_path = os.path.join(SAVE_DIR, file_name)
        
        # دانلود ویدیو
        downloaded_file = bot.download_file(file_info.file_path)
        
        with open(file_path, 'wb') as f:
            f.write(downloaded_file)
        
        # لینک دانلود
        download_url = f"https://{DOMAIN}/{SAVE_DIR}/{file_name}"
        
        # ارسال لینک برای کاربر
        reply_text = f"""
✅ ویدیو با موفقیت ذخیره شد!

🔗 لینک دانلود:
{download_url}

⏳ این فایل بعد از ۲۴ ساعت به صورت خودکار پاک خواهد شد.
        """
        bot.reply_to(message, reply_text)
        
        # زمان‌بندی حذف فایل
        delete_file_after_delay(file_path, 86400)  # 24 ساعت
        
        logging.info(f"ویدیو ذخیره شد: {file_name}")
        
    except Exception as e:
        logging.error(f"خطا: {e}")
        bot.reply_to(message, f"❌ خطا در پردازش ویدیو:\n{str(e)}")

# هندلر برای دستور /start
@bot.message_handler(commands=['start'])
def send_welcome(message):
    bot.reply_to(message, "سلام! 🎥\nویدیو خود را برای من بفرست تا لینک دانلود موقت (۲۴ ساعته) برات بسازم.")

# ==================== اجرای بات ====================
if __name__ == "__main__":
    print("ربات شروع به کار کرد...")
    print(f"فایل‌ها در پوشه {SAVE_DIR} ذخیره می‌شوند.")
    print(f"لینک‌ها با دامنه https://{DOMAIN} ساخته می‌شوند.")
    
    # اجرای بات با polling
    bot.infinity_polling()