import json
import os
import requests
import time
# ==========================================================
# اسکریپت انتقال محتوای کانال تلگرام به کانال بله
# تدوین و انتشار عمومی رایگان توسط شرکت یادگار درخشان آریا
# ==========================================================
# --- تنظیمات ربات بله ---
BALE_BOT_TOKEN = 'tokeneKhodRaInjaBeJayeInMatnGhararDahid' # توکنی که از بات فادر بله گرفتید
BALE_CHANNEL_ID = '@PasteYourBaleIDHere'  # آیدی کانال بله شما (با @)

# مسیر پایه پوشه اکسپورت تلگرام (همان جایی که اسکریپت و result.json قرار دارند)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
TELEGRAM_EXPORT_FILE = os.path.join(BASE_DIR, 'result.json')

def load_telegram_data(filepath):
    """خواندن داده‌ها از فایل JSON اکسپورت تلگرام"""
    with open(filepath, 'r', encoding='utf-8') as f:
        return json.load(f)

def extract_text(raw_text):
    """تبدیل متن‌های ساختاریافته تلگرام به رشته ساده"""
    if not raw_text:
        return ""
    if isinstance(raw_text, str):
        return raw_text
    if isinstance(raw_text, list):
        full_text = ""
        for part in raw_text:
            if isinstance(part, str):
                full_text += part
            elif isinstance(part, dict) and 'text' in part:
                full_text += part['text']
        return full_text
    return str(raw_text)

def send_message_to_bale(text):
    """ارسال پیام متنی خالص"""
    url = f"https://tapi.bale.ai/bot{BALE_BOT_TOKEN}/sendMessage"
    payload = {
        'chat_id': BALE_CHANNEL_ID,
        'text': text
    }
    try:
        response = requests.post(url, json=payload)
        return response.status_code == 200
    except Exception as e:
        print(f"⚠️ خطای ارتباطی در ارسال متن: {e}")
        return False

def send_photo_to_bale(photo_path, caption):
    """ارسال تصویر به همراه کپشن (متن همراه عکس)"""
    url = f"https://tapi.bale.ai/bot{BALE_BOT_TOKEN}/sendPhoto"
    try:
        with open(photo_path, 'rb') as photo_file:
            files = {'photo': photo_file}
            data = {
                'chat_id': BALE_CHANNEL_ID,
                'caption': caption
            }
            response = requests.post(url, data=data, files=files)
            return response.status_code == 200
    except Exception as e:
        print(f"⚠️ خطای ارتباطی در ارسال تصویر ({photo_path}): {e}")
        return False

def main():
    print("شروع خواندن فایل تلگرام...")
    if not os.path.exists(TELEGRAM_EXPORT_FILE):
        print(f"❌ فایل {TELEGRAM_EXPORT_FILE} یافت نشد!")
        return

    data = load_telegram_data(TELEGRAM_EXPORT_FILE)
    messages = data.get('messages', [])
    
    print(f"تعداد کل پیام‌های یافت شده: {len(messages)}")
    
    for msg in messages:
        if msg.get('type') == 'message':
            raw_text = msg.get('text', '')
            text_content = extract_text(raw_text)
            
            # بررسی وجود تصویر در پیام
            # در فایل JSON تلگرام، مسیر فایل عکس معمولاً در کلید 'photo' ذخیره می‌شود
            photo_relative_path = msg.get('photo')
            
            if photo_relative_path:
                # مسیر کامل فایل عکس روی سیستم شما
                full_photo_path = os.path.join(BASE_DIR, photo_relative_path)
                
                if os.path.exists(full_photo_path):
                    print(f"📸 در حال ارسال تصویر با کپشن: {text_content[:30]}...")
                    success = send_photo_to_bale(full_photo_path, text_content)
                    if success:
                        print("✅ تصویر با موفقیت ارسال شد.")
                    else:
                        print("❌ خطا در ارسال تصویر.")
                else:
                    print(f"⚠️ فایل تصویر پیدا نشد: {full_photo_path}")
                    # اگر فایل عکس پیدا نشد، حداقل متن آن را ارسال می‌کنیم
                    if text_content.strip():
                        send_message_to_bale(text_content)
            
            elif text_content.strip():
                # اگر فقط متن بود
                print(f"💬 در حال ارسال متن: {text_content[:30]}...")
                success = send_message_to_bale(text_content)
                if success:
                    print("✅ پیام با موفقیت ارسال شد.")
                else:
                    print("❌ خطا در ارسال پیام.")
            
            # وقفه کوتاه برای جلوگیری از محدودیت سرعت (Rate Limit) سرور بله
            time.sleep(1.5)
                
    print("پردازش و انتقال کامل محتوا به پایان رسید.")

if __name__ == '__main__':
    main()