from telegram import InlineKeyboardButton, InlineKeyboardMarkup
# config.py
"""
تمام تنظیمات و متون پیام‌ها در این فایل قرار دارد
"""

# ==================== تنظیمات اصلی ====================
BOT_TOKEN = "8852680271:AAEWbv-jRCnSGsBcdQBO91hzLFQQJoSOwIk"
ADMIN_ID = 5125650933
CHANNEL_ID = "@shitty_thingz"
DB_PATH = "music_bot.db"

# ==================== تنظیمات وب‌هوک ====================
WEBHOOK_MODE = True  # True برای وب‌هوک، False برای polling
WEBHOOK_URL = "https://milaty.ir/webhook"  # آدرس وب‌هوک
WEBHOOK_PORT = 8080  # پورت برای وب‌هوک
WEBHOOK_LISTEN = "0.0.0.0"  # آدرس listening

# ==================== پروکسی (اختیاری) ====================
USE_PROXY = False
PROXY_URL = "http://22.101.250.104:8080"  # پروکسی در صورت نیاز

# ==================== محدودیت‌ها ====================
MAX_DAILY_UPLOADS = 5  # حداکثر آهنگ در روز
MAX_AUDIO_DURATION = 1000  # حداکثر مدت آهنگ (ثانیه)
MAX_AUDIO_SIZE = 50 * 1024 * 1024  # 50MB

# ==================== تنظیمات پیش‌فرض دیتابیس ====================
DEFAULT_SETTINGS = {
    "check_subscription": "1",      # بررسی عضویت چنل
    "show_bot_id": "1",             # نمایش آیدی ربات
    "forward_mode": "copy",         # copy | forward
    "name_format": "1",             # شماره فرمت نام (۱-۱۰)
    "anonymous_hashtag": "#ارسالی",
    "require_approval": "0",        # تایید قبل از انتشار
    "bot_username": "",
}

# ==================== فرمت‌های نمایش نام کاربر ====================
NAME_FORMATS = {
    "1": "از [{}](tg://user?id={})",      # @username
    "2": "از [{}](tg://user?id={})",      # نام کامل
    "3": "فرستاده [{}](tg://user?id={})",
    "4": "پیشنهاد [{}](tg://user?id={})",
    "5": "کار [{}](tg://user?id={})",
    "6": "🎵 از [{}](tg://user?id={})",
    "7": "📨 [{}](tg://user?id={})",
    "8": "👤 [{}](tg://user?id={})",
    "9": "[{}](tg://user?id={})",
    "10": "",  # بدون اسم
}

# ==================== پیام‌ها و متن‌ها ====================
MESSAGES = {
    # پیام خوش‌آمدگویی
    "start": (
        "درود عییزم ... آهنگو بفرست تا بره تو چنلم\n"
        "اگه ناشناس بفرستی اسمت نمیره زیرش ولی اگه معمولی ارسال کنی "
        "اسمت میاد زیرش و میشه پروفایلت رو باز کرد"
    ),
    
    # پیام‌های ارسال آهنگ
    "send_music": "🎵 آهنگت رو بفرست",
    "send_anon": "🕵️ آهنگت رو بفرست (ناشناس)",
    "waiting_after_join": "دمت گرم عضو شدی. حالا آهنگو بفرس",
    "waiting_after_join_anon": "دمت گرم عضو شدی. حالا آهنگو بفرس (ناشناس)",
    
    # پیام‌های خطا
    "join_required": "عییزم اول عضو اینا شو",
    "not_joined_retry": "مشتی هنوز عضو نشدی! :/",
    "only_audio": ":/ فقط آهنگ بفرس این چیه فرستادی",
    "daily_limit": "مشتی شرمنده روزی {} تا میشه بفرستی مگر اینکه پارتی داشته باشی",
    "send_start": "بی زحمت /start بزن",
    "send_failed": "نمیدونم چرا نشد :/",
    "approval_required": "وایسا تا تاییدش کنم بعد میره چنل🗿",
    
    # پیام‌های تایید/رد
    "approved_user": "تایید کردم برو کیف کن\nدمدم گم",
    "rejected_user": "تایید نکردم🗿",
    
    # پیام‌های ادمین
    "approval_request_title": "🔔 *درخواست انتشار آهنگ*",
    "approval_approved": "✅ *تایید شد و به چنل اضافه شد*",
    "approval_rejected": "❌ *رد شد*",
    "approval_not_found": "⚠️ این درخواست دیگه وجود نداره (احتمالاً قبلاً پردازش شده).",
    
    # پیام‌های پنل ادمین
    "admin_panel_title": "⚙️ *پنل مدیریت*",
    "sponsors_prompt": "📢 *کانال‌های اسپانسر:*\n\n",
    "no_sponsors": "هنوز کانالی اضافه نشده.\n",
    "sponsors_add_hint": "\n➕ آیدی کانال جدید رو بفرست (مثلاً @channel)",
    "stats_title": "📊 *آمار کامل*",
    "invalid_channel": "❌ آیدی اشتباهه. باید با @ شروع بشه یا عددی باشه.",
    "channel_not_found": "❌ کانال پیدا نشد.\nربات رو ادمین اون کانال کرده باشی؟",
    "channel_added": "✅ کانال *{}* اضافه شد!",
    "broadcast_ready": "📣 *پیام همگانی*\n\nپیامت رو بفرست (متن، عکس، آهنگ، ویدیو — هر چیزی).\nبه همه کاربران ارسال میشه.",
    "broadcast_progress": "⏳ در حال ارسال به {} نفر...",
    "broadcast_done": "📣 *پیام همگانی تموم شد!*\n\n✅ موفق: {}\n❌ ناموفق: {}",
    
    # دکمه‌ها
    "btn_send_music": "🎵 ارسال آهنگ",
    "btn_send_anon": "🕵️ ارسال ناشناس",
    "btn_admin_panel": "⚙️ پنل مدیریت",
    "btn_approve": "✅ تایید و انتشار",
    "btn_reject": "❌ رد کردن",
    "btn_joined": "✅ عضو شدم",
    "btn_back": "🔙 بازگشت",
    "btn_cancel": "🔙 لغو",
    
    # متن کپشن چنل
    "caption_anon": "#ارسالی",
    "caption_normal": "{}\n#ارسالی",
    "bot_signature": "\n🤖 @{}",
    
    # متن ارسال به ادمین برای تایید
    "admin_approval_caption": (
        "{title}\n\n"
        "{sender_info}\n"
        "نوع: {anon_label}\n"
        "🎵 {track_info}\n"
        "🆔 شناسه: `{pending_id}`"
    ),
    "admin_approval_caption_voice": (
        "{title}\n\n"
        "{sender_info}\n"
        "نوع: {anon_label}\n"
        "🆔 شناسه: `{pending_id}`"
    ),
    
    # متن وضعیت‌ها
    "status_sub_checked": "✅ بررسی عضویت فعال",
    "status_sub_unchecked": "❌ بررسی عضویت غیرفعال",
    "status_bot_checked": "✅ نمایش آیدی ربات فعال",
    "status_bot_unchecked": "❌ نمایش آیدی ربات غیرفعال",
    "status_copy": "📋 کپی",
    "status_forward": "↩️ فوروارد",
    "status_approval_on": "✅ تایید آهنگ فعال",
    "status_approval_off": "❌ تایید آهنگ غیرفعال",
}

# ==================== دکمه‌ها و کیبوردها ====================
def get_main_keyboard(is_admin=False):
    """کیبورد اصلی منو"""
    keyboard = [
        [InlineKeyboardButton(MESSAGES["btn_send_music"], callback_data="send_music")],
        [InlineKeyboardButton(MESSAGES["btn_send_anon"], callback_data="send_anon")],
    ]
    if is_admin:
        keyboard.append([InlineKeyboardButton(MESSAGES["btn_admin_panel"], callback_data="admin_panel")])
    return InlineKeyboardMarkup(keyboard)