from rubpy import Client, filters
import json
import os
import asyncio

OWNER_GUID = "u0J8mum042e53f12d72f332587b0bbad"

WELCOMED_FILE = "welcomed_users.json"
CONFIG_FILE = "bot_config.json"

DEFAULT_WELCOME = """✨ به ربات جریان خوش آمدید! ✨

🌊 جریان | Jaryane
━━━━━━━━━━━━━━━━━━━━
اینترنت پایدار، بدون دردسر
━━━━━━━━━━━━━━━━━━━━
⚡ همین حالا شروع کن!"""

DEFAULT_PHOTO = """📩 رسید دریافت شد ✅

بزودی بررسی و تأیید میشه
🦋 @Supports_Jaryane"""

if os.path.exists(CONFIG_FILE):
    with open(CONFIG_FILE, 'r', encoding='utf-8') as f:
        config = json.load(f)
        WELCOME_TEXT = config.get("welcome", DEFAULT_WELCOME)
        PHOTO_TEXT = config.get("photo", DEFAULT_PHOTO)
else:
    WELCOME_TEXT = DEFAULT_WELCOME
    PHOTO_TEXT = DEFAULT_PHOTO

if os.path.exists(WELCOMED_FILE):
    with open(WELCOMED_FILE, 'r', encoding='utf-8') as f:
        welcomed_users = set(json.load(f))
else:
    welcomed_users = set()

def save_welcomed():
    with open(WELCOMED_FILE, 'w', encoding='utf-8') as f:
        json.dump(list(welcomed_users), f)

def save_config():
    config = {"welcome": WELCOME_TEXT, "photo": PHOTO_TEXT}
    with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
        json.dump(config, f, ensure_ascii=False, indent=4)

waiting_for = None

async def main():
    global WELCOME_TEXT, PHOTO_TEXT, waiting_for
    
    app = Client("my_b20ot")
    
    @app.on_message_updates(filters.text, filters.private)
    async def handler(update):
        global WELCOME_TEXT, PHOTO_TEXT, waiting_for
        
        if update.is_me:
            return
        
        user = update.author_guid
        text = update.text or ""
        
        if user == OWNER_GUID:
            if waiting_for == "welcome":
                WELCOME_TEXT = text
                save_config()
                waiting_for = None
                await update.reply("✅ **متن خوش‌آمدگویی** با موفقیت ذخیره شد!")
                return
            
            if waiting_for == "photo":
                PHOTO_TEXT = text
                save_config()
                waiting_for = None
                await update.reply("✅ **متن پاسخ به عکس** با موفقیت ذخیره شد!")
                return
            
            if text == "/ping":
                await update.reply("🏓 پونگ! ربات آنلاین و آماده‌ست ✅")
                return
            
            if text == "/setwelcome":
                waiting_for = "welcome"
                await update.reply("📝 **متن خوش‌آمدگویی جدید** رو بفرست:")
                return
            
            if text == "/setphoto":
                waiting_for = "photo"
                await update.reply("📸 **متن پاسخ به عکس جدید** رو بفرست:")
                return
            
            if text == "/status":
                await update.reply(
                    f"📊 **وضعیت ربات:**\n\n"
                    f"✅ آنلاین\n"
                    f"👥 کاربران: {len(welcomed_users):,} نفر\n\n"
                    f"━━━━━━━━━━━━━━━━\n\n"
                    f"**متن خوش‌آمدگویی:**\n{WELCOME_TEXT}\n\n"
                    f"━━━━━━━━━━━━━━━━\n\n"
                    f"**متن پاسخ به عکس:**\n{PHOTO_TEXT}"
                )
                return
            
            if text == "/cancel":
                if waiting_for:
                    waiting_for = None
                    await update.reply("✅ عملیات لغو شد.")
                return
            
            if text == "/clear":
                welcomed_users.clear()
                save_welcomed()
                await update.reply("✅ حافظه کاربران پاک شد.")
                return
            
            if text == "/help":
                await update.reply(
                    "📚 **دستورات ادمین:**\n\n"
                    "/ping - تست آنلاین بودن\n"
                    "/setwelcome - تنظیم متن خوش‌آمدگویی\n"
                    "/setphoto - تنظیم متن پاسخ به عکس\n"
                    "/status - نمایش وضعیت\n"
                    "/cancel - لغو تنظیم\n"
                    "/clear - پاک کردن حافظه\n"
                    "/help - این راهنما"
                )
                return
        
        if user not in welcomed_users:
            await update.reply(WELCOME_TEXT)
            welcomed_users.add(user)
            save_welcomed()
            print(f"✅ خوش‌آمد به {user}")

    @app.on_message_updates(filters.photo, filters.private)
    async def photo_handler(update):
        if update.is_me:
            return
        await update.reply(PHOTO_TEXT)
        print(f"📸 پاسخ عکس به {update.author_guid}")

    await app.start()
    print("✅ ربات لاگین شد و آماده‌ست!")
    await app.run()

if __name__ == "__main__":
    asyncio.run(main())