from pyrogram.types import ReplyKeyboardMarkup, InlineKeyboardMarkup, InlineKeyboardButton
from app.config import ADMINS


class Buttons:
    home = ReplyKeyboardMarkup(
        [
            ["🎗 بنر های من", "💡 بنر های فعال"],
            ["💲 امور مالی", "👤 حساب کاربری"],
            ["📊 نفرات برتر", "🔖 مدیریت کانال ها"],
            ["🧑🏻‍💻 پشتیبانی"]
        ],
        resize_keyboard=True
    )

    register = ReplyKeyboardMarkup(
        [
            ["🐋 ثبت نام"],
            ["🧑🏻‍💻 پشتیبانی"]
        ],
        resize_keyboard=True
    )

    back = ReplyKeyboardMarkup(
        [
            ["🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    options = ReplyKeyboardMarkup(
        [
            ["❕ مشاهده", "➕ اضافه کردن"],
            ["➖ حذف کردن", "🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    channels = ReplyKeyboardMarkup(
        [
            ["🗄 لیست کانال ها", "➕ اضافه کردن کانال"],
            ["🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    financial = ReplyKeyboardMarkup(
        [
            ["🏦 حساب بانکی", "⚡️ کیف پول TRC20"],
            ["⚡️ کیف پول TON", "💰 انتقال موجودی"],
            ["💳 برداشت", "🗒 تاریخچه برداشت"],
            ["📊 نفرات برتر", "🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    withdraw_type = ReplyKeyboardMarkup(
        [
            ["🏦 ریال", "⚡️ ترون"],
            ["⚡️ TON", "🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    add_channel_type = ReplyKeyboardMarkup(
        [
            ["➿ چنل وطنی", "➿ چنل اونلی فنز"],
            ["➿ چنل اخلاقی", "➿ چنل زیرنویس"],
            ["🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    channel_type = ReplyKeyboardMarkup(
        [
            ["➿ چنل وطنی", "➿ چنل اونلی فنز"],
            ["➿ چنل اخلاقی", "➿ چنل زیرنویس"],
            ["➿ همه", "✅ تایید"],
            ["🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    banner_end = ReplyKeyboardMarkup(
        [
            ["👤 تعدادی", "🕐 زمانی"],
            ["🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    confirm = InlineKeyboardMarkup(
        [
            [
                InlineKeyboardButton("✅ تایید", callback_data="banner_confirm|add")
            ],
            [
                InlineKeyboardButton("❌ رد", callback_data="banner_confirm|cancel")
            ]
        ]
    )

    edit_banner = ReplyKeyboardMarkup(
        [
            ["💡 تغییر بنر", "📊 گروه آمار"],
            ["➿ تغییر ظرفیت/زمان", "🌀 تغییر محدودیت"],
            ["💵 تغییر قیمت", "⛏️ دسترسی تغییر وضعیت"],
            ["🔗 آمار", "🔙 بازگشت"]
        ],
        resize_keyboard=True
    )

    @staticmethod
    def admin(user_id: int, rights: str):
        if user_id not in ADMINS:
            return None

        admin_buttons = [
            ["🔹 روشن/خاموش کردن ربات"],
            ["🔑 ادمین", "✉️ پیام به کاربر"],
            ["🔖 ارسال همگانی", "📊 آمار ربات"],
            ["💵 افزایش موجودی", "🎁 هدیه"],
            ["💥 حذف بنر", "⭐️ افزودن بنر"],
            ["☄️ حسابرسی", "🌪 پیگیری"],
            ["📸 ریشات", "🛡 بنر ها"],
            ["👤 مشخصات کاربر", "✨ تسویه ها"],
            ["🍁 اخراج کاربر", "🔦 داپ ها"],
            ["🕯 متن استارت", "📢 کانال بنر"],
            ["🤖 تنظیمات ربات"],
            ["🔙 بازگشت"]
        ]

        # اگر کاربر ادمین اصلی (Owner) بود، بدون فیلتر کردن تمام دکمه‌ها را نشان بده
        if user_id == ADMINS[0] or rights == "all" or not rights:
            return ReplyKeyboardMarkup(admin_buttons, resize_keyboard=True)

        rights_buttons_map = {
            "statistic": ["📊 آمار ربات"],
            "send_all": ["🔖 ارسال همگانی"],
            "send_user_pm": ["✉️ پیام به کاربر"],
            "edit_balance": ["💵 افزایش موجودی"],
            "banner": ["⭐️ افزودن بنر", "💥 حذف بنر", "🌪 پیگیری", "☄️ حسابرسی", "📸 ریشات", "🛡 بنر ها"],
            "invoices": ["✨ تسویه ها"],
            "user_info": ["👤 مشخصات کاربر"],
            "users": ["🌵 کاربران"],
            "ban_user": ["🍁 اخراج کاربر"],
            "extract": ["📮 استخراج"],
            "support": ["🧑🏻‍💻 پشتیبانی"],
            "bot_settings": ["🤖 تنظیمات ربات"]
        }

        if isinstance(rights, str):
            rights = rights.split(',')
        elif rights is None:
            rights = []

        allowed_buttons = set()
        for right in rights:
            allowed_buttons.update(rights_buttons_map.get(right, []))

        filtered_buttons = []
        for row in admin_buttons:
            filtered_row = [btn for btn in row if btn in allowed_buttons]
            if filtered_row:
                filtered_buttons.append(filtered_row)

        if filtered_buttons:
            filtered_buttons.append(["🔙 بازگشت"])
            return ReplyKeyboardMarkup(filtered_buttons, resize_keyboard=True)

        return ReplyKeyboardMarkup([["🔙 بازگشت"]], resize_keyboard=True)