import telebot
from telebot import types
import sqlite3
import random
import time
import re
import logging
from datetime import datetime, timedelta
import os
import json

# ========== تنظیمات ==========
BOT_TOKEN = "8802467032:AAFBl0H1ik7351vu43cxNaQzpzoOA9LGqrE"
ADMIN_IDS = [6268481597]
CHANNEL_USERNAME = "@ramcoderteam"
CHANNEL_LINK = "https://t.me/ramcoderteam"
CARD_NUMBER = "5894631168067270"
SUPPORT_PHONE = "09307676006"
WEBSITE_URL = "https://ramcoder.ir"

# ========== شناسه‌های ایموجی پریمیوم ==========
EMOJI_GOLD_STAR = "5352741488155459958"     
EMOJI_FREE_GIFT = "5841267724285646096"     
EMOJI_NO_BUY = "5852494416610071420"       
EMOJI_ABOUT = "6021618194228187816"        
EMOJI_TICKET = "5199891564960165498"        
EMOJI_IRAN = "5226726481970891321"         
EMOJI_USA = "5229070374473338057"          
EMOJI_TICK_BLUE = "5947126199841985101"     

logging.basicConfig(level=logging.INFO)
bot = telebot.TeleBot(BOT_TOKEN)

# ========== دیتابیس ==========
conn = sqlite3.connect('ramcoder_bot.db', check_same_thread=False, isolation_level=None)
c = conn.cursor()

c.execute('''CREATE TABLE IF NOT EXISTS users (
    user_id INTEGER PRIMARY KEY,
    username TEXT,
    first_name TEXT,
    join_date TEXT,
    invite_count INTEGER DEFAULT 0,
    used_free_member INTEGER DEFAULT 0,
    is_blocked INTEGER DEFAULT 0,
    blocked_reason TEXT,
    blocked_at TEXT,
    unblocked_at TEXT
)''')

c.execute('''CREATE TABLE IF NOT EXISTS orders (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER,
    tracking_code TEXT,
    service_type TEXT,
    title TEXT,
    price INTEGER,
    quantity INTEGER,
    details TEXT,
    status TEXT,
    created_at TEXT,
    updated_at TEXT,
    admin_note TEXT,
    screenshot_file_id TEXT
)''')

c.execute('''CREATE TABLE IF NOT EXISTS settings (
    key TEXT PRIMARY KEY,
    value TEXT
)''')

c.execute('''CREATE TABLE IF NOT EXISTS tickets (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER,
    message TEXT,
    admin_response TEXT,
    status TEXT,
    created_at TEXT,
    updated_at TEXT
)''')

c.execute('''CREATE TABLE IF NOT EXISTS admins (user_id INTEGER PRIMARY KEY)''')

c.execute('INSERT OR IGNORE INTO settings (key, value) VALUES ("welcome_text", "سلام {first_name} عزیز! به ربات رم‌کدر خوش اومدی 🌟")')
c.execute('INSERT OR IGNORE INTO settings (key, value) VALUES ("about_text", "💎 تیم رام‌کدر (RamCoder) 💎\n\nما از سال ۱۳۹۸ فعالیت خود را در حوزه خدمات دیجیتال و تبلیغات تلگرامی آغاز کردیم.\n\n✨ تخصص و فعالیت‌های ما:\n• مشاوره و اجرای تبلیغات در تلگرام (سرچ، کانال، ربات)\n• افزایش ممبر واقعی و فیک برای کانال و گروه\n• افزایش بازدید پست‌ها و کانال‌ها\n• طراحی سایت‌های حرفه‌ای\n• ساخت ربات‌های تلگرام\n• اخذ تیک آبی تلگرام\n\n🔒 چرا رام‌کدر؟\n• بیش از ۵ سال سابقه درخشان\n• اجرای بیش از ۱۰۰۰ پروژه موفق\n• تیم متخصص و حرفه‌ای\n• پشتیبانی ۲۴ ساعته\n• قیمت‌های مناسب و رقابتی\n• تضمین کیفیت و بازدهی\n\n📢 با ما همراه باشید تا کسب‌و‌کارتان را به اوج برسانید.\n\n📞 ارتباط با ما:\n📱 تلفن: ۰۹۳۰۷۶۷۶۰۰۶\n🌐 وبسایت: ramcoder.ir\n📢 کانال: @ramcoderteam\n🤖 ربات: @ramcoderbot\n💬 پشتیبان: @ramcoder_admin\n\n💪 رام‌کدر؛ همراه مطمئن کسب‌و‌کار شما")')
c.execute('INSERT OR IGNORE INTO settings (key, value) VALUES ("card_number", "5894631168067270")')

for admin_id in ADMIN_IDS:
    c.execute('INSERT OR IGNORE INTO admins (user_id) VALUES (?)', (admin_id,))
conn.commit()

def db_query(query, params=(), fetch_one=False, fetch_all=False, commit=False):
    try:
        c.execute(query, params)
        if commit:
            conn.commit()
            return None
        elif fetch_one:
            return c.fetchone()
        elif fetch_all:
            return c.fetchall()
        return None
    except Exception as e:
        logging.error(f"Database error: {e}")
        return None

def get_setting(key):
    result = db_query('SELECT value FROM settings WHERE key = ?', (key,), fetch_one=True)
    if result:
        return result[0]
    return None

def generate_tracking_code():
    return str(random.randint(10000000, 99999999))

def generate_referral_code(user_id):
    return f"invite_{user_id}_{random.randint(1000, 9999)}"

def format_price(price):
    return f"{price:,}".replace(',', ',')

def is_admin(user_id):
    result = db_query('SELECT user_id FROM admins WHERE user_id = ?', (user_id,), fetch_one=True)
    if result:
        return True
    return False

def check_membership(user_id):
    try:
        member = bot.get_chat_member(CHANNEL_USERNAME, user_id)
        if member.status in ['member', 'administrator', 'creator']:
            return True
        return False
    except:
        return False

def extract_username(text):
    text = text.strip()
    if text.startswith('@'):
        return text
    elif 't.me/' in text:
        match = re.search(r't\.me/([^/]+)', text)
        if match:
            return f"@{match.group(1)}"
        return text
    return text

def delete_previous_message(user_id, message_id):
    try:
        bot.delete_message(user_id, message_id)
    except:
        pass

def is_user_blocked(user_id):
    result = db_query('SELECT is_blocked FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
    if result and result[0] == 1:
        return True
    return False

user_temp_data = {}
last_message_ids = {}

def save_last_message(user_id, message_id):
    last_message_ids[user_id] = message_id

def send_menu(user_id, text, keyboard, new_message=True):
    if new_message and user_id in last_message_ids:
        try:
            bot.delete_message(user_id, last_message_ids[user_id])
        except:
            pass
    msg = bot.send_message(user_id, text, parse_mode=None, reply_markup=keyboard)
    save_last_message(user_id, msg.message_id)
    return msg

def back_to_main_keyboard():
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    keyboard.add(types.KeyboardButton("🔙 بازگشت به منو اصلی"))
    return keyboard

def main_menu(message):
    user_id = message.chat.id
    if is_user_blocked(user_id):
        bot.send_message(user_id, "🚫 شما توسط ادمین مسدود شده‌اید!")
        return
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("ثبت سفارش جدید", callback_data='new_order', style='primary', icon_custom_emoji_id=EMOJI_GOLD_STAR),
        types.InlineKeyboardButton("ممبر رایگان", callback_data='free_member', style='primary', icon_custom_emoji_id=EMOJI_FREE_GIFT),
        types.InlineKeyboardButton("قیمت خدمات", callback_data='prices', style='primary', icon_custom_emoji_id=EMOJI_NO_BUY),
        types.InlineKeyboardButton("درباره ما", callback_data='about_us', style='primary', icon_custom_emoji_id=EMOJI_ABOUT),
        types.InlineKeyboardButton("ارسال تیکت", callback_data='send_ticket', style='primary', icon_custom_emoji_id=EMOJI_TICKET)
    )
    if is_admin(user_id):
        keyboard.add(types.InlineKeyboardButton("🔐 پنل ادمین", callback_data='admin_panel', style='primary'))
    send_menu(user_id, "🏠 **منوی اصلی**\n\nلطفاً یکی از گزینه‌های زیر را انتخاب کنید:", keyboard)

def admin_panel_menu(user_id, edit_msg=None):
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("🛒 مدیریت سفارشات", callback_data='admin_orders', style='primary'),
        types.InlineKeyboardButton("👥 مدیریت کاربران", callback_data='admin_users', style='primary'),
        types.InlineKeyboardButton("📢 ارسال همگانی", callback_data='admin_broadcast', style='primary'),
        types.InlineKeyboardButton("📞 مدیریت تیکت‌ها", callback_data='admin_tickets', style='primary'),
        types.InlineKeyboardButton("🛡️ مدیریت ادمین‌ها", callback_data='admin_admins', style='primary'),
        types.InlineKeyboardButton("🚪 خروج", callback_data='back_main', style='danger')
    )
    text = "🔐 **پنل مدیریت رام‌کدر**\n\n📌 لطفاً یکی از گزینه‌های زیر را انتخاب کنید:"
    if edit_msg:
        bot.edit_message_text(text, user_id, edit_msg.message_id, parse_mode=None, reply_markup=keyboard)
    else:
        send_menu(user_id, text, keyboard)

def prices_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger'))
    text = """💰 **لیست قیمت خدمات رام‌کدر**

📱 **خدمات تلگرام:**
• خرید ممبر (واقعی): هر ۱۰۰۰ = ۲۵۵,۰۰۰ تومان
• خرید ممبر (فیک): هر ۱۰۰۰ = ۱۶۰,۰۰۰ تومان
• خرید بازدید: هر ۱۰۰۰ = ۳۵,۰۰۰ تومан
• تیک آبی: ۳ ماهه = ۳,۴۰۰,۰۰۰ تومان
• ساخت ربات: متغیر (تماس بگیرید)

📢 **تلگرام ادز:**
• تبلیغ در سرچ: هر ۵,۰۰۰ = ۵۵۰,۰۰۰ تومان
• تبلیغ در کانال‌های هدف: هر ۱۰,۰۰۰ = ۷۵۰,۰۰۰ تومان
• تبلیغ در ربات‌های هدف: هر ۱۰,۰۰۰ = ۷۵۰,۰۰۰ تومان
• 🔞 ادز بزرگسالان: استارت‌کار ۵,۵۰۰,۰۰۰ + هزینه بازدید
  (سرچ: هر ۵,۰۰۰ = ۵۵۰,۰۰۰ / کانال و ربات: هر ۱۰,۰۰۰ = ۷۵۰,۰۰۰)

📌 برای اطلاع دقیق از قیمت‌ها، با پشتیبانی تماس بگیرید."""
    send_menu(user_id, text, keyboard)

def new_order_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("خرید ممبر", callback_data='telegram_member', style='primary', icon_custom_emoji_id=EMOJI_GOLD_STAR),
        types.InlineKeyboardButton("خرید بازدید", callback_data='telegram_view', style='primary'),
        types.InlineKeyboardButton("خرید تیک آبی", callback_data='telegram_tick', style='primary', icon_custom_emoji_id=EMOJI_TICK_BLUE),
        types.InlineKeyboardButton("تلگرام ادز", callback_data='telegram_ads', style='primary'),
        types.InlineKeyboardButton("بازگشت", callback_data='back_main', style='danger')
    )
    send_menu(user_id, "📝 **ثبت سفارش جدید**\n\nلطفاً یکی از گزینه‌های زیر را انتخاب کنید:", keyboard)

def member_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("ممبر واقعی", callback_data='real_member', style='primary', icon_custom_emoji_id=EMOJI_IRAN),
        types.InlineKeyboardButton("ممبر فیک", callback_data='fake_member', style='primary', icon_custom_emoji_id=EMOJI_USA),
        types.InlineKeyboardButton("بازگشت", callback_data='back_new_order', style='danger')
    )
    send_menu(user_id, "👥 **خرید ممبر**\n\nلطفاً نوع ممبر را انتخاب کنید:", keyboard)

def view_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("📌 بازدید پست (تکی)", callback_data='view_single', style='primary'),
        types.InlineKeyboardButton("📌 بازدید چند پست", callback_data='view_multi', style='primary'),
        types.InlineKeyboardButton("بازگشت", callback_data='back_new_order', style='danger')
    )
    send_menu(user_id, "👁️ **خرید بازدید**\n\nلطفاً نوع بازدید را انتخاب کنید:", keyboard)

def ads_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("🔍 تبلیغ در سرچ", callback_data='ads_search', style='primary'),
        types.InlineKeyboardButton("📢 تبلیغ در کانال‌های هدف", callback_data='ads_channel', style='primary'),
        types.InlineKeyboardButton("🤖 تبلیغ در ربات‌های هدف", callback_data='ads_robot', style='primary'),
        types.InlineKeyboardButton("🔞 ادز بزرگسالان", callback_data='ads_adult', style='primary'),
        types.InlineKeyboardButton("بازگشت", callback_data='back_new_order', style='danger')
    )
    send_menu(user_id, "📢 **تلگرام ادز**\n\nلطفاً نوع تبلیغ را انتخاب کنید:", keyboard)

def ads_adult_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("🔍 تبلیغ در سرچ", callback_data='ads_adult_search', style='primary'),
        types.InlineKeyboardButton("📢 تبلیغ در کانال‌های هدف", callback_data='ads_adult_channel', style='primary'),
        types.InlineKeyboardButton("🤖 تبلیغ در ربات‌های هدف", callback_data='ads_adult_robot', style='primary'),
        types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_ads', style='danger')
    )
    text = """🔞 **ادز کانال‌های بزرگسالان**

📌 این بخش مخصوص کانال‌هایی است که محتوای بزرگسالان دارند.
(کانال‌های فال، وی‌پی‌ان، کپی‌رایت، بزرگسالان و...)

💡 ما با سال‌ها تجربه و ترفندهای خاص، تبلیغات شما را در این کانال‌ها
به بهترین شکل ممکن اجرا میکنیم.

📌 **نمونه کانال‌های بزرگسالان:**
• کانال‌های فال و طالع‌بینی
• کانال‌های وی‌پی‌ان و فیلترشکن
• کانال‌های کپی‌رایت و دانلود فیلم
• کانال‌های بزرگسالان (۱۸+)

💰 **هزینه‌ها:**
• هزینه استارت‌کار (یکبار): ۵,۵۰۰,۰۰۰ تومان
• هزینه هر ۵,۰۰۰ بازدید (سرچ): ۵۵۰,۰۰۰ تومان
• هزینه هر ۱۰,۰۰۰ بازدید (کانال/ربات): ۷۵۰,۰۰۰ تومان

📊 **محدوده تعداد بازدید:** ۱,۰۰۰ تا ۵۰,۰۰۰

📌 **مبلغ کل = استارت‌کار + هزینه بازدید**

📢 **نوع تبلیغ خود را انتخاب کنید:**
"""
    send_menu(user_id, text, keyboard)

def tick_menu(message):
    user_id = message.chat.id
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("📆 ۳ ماهه - ۳,۴۰۰,۰۰۰", callback_data='tick_3', style='primary'),
        types.InlineKeyboardButton("📆 ۶ ماهه - ۵,۴۰۰,۰۰۰", callback_data='tick_6', style='primary'),
        types.InlineKeyboardButton("📆 ۹ ماهه - ۷,۶۰۰,۰۰۰", callback_data='tick_9', style='primary'),
        types.InlineKeyboardButton("بازگشت", callback_data='back_new_order', style='danger')
    )
    send_menu(user_id, "✅ **تیک آبی تلگرام**\n\n⚡ بدون نیاز به ورود اطلاعات\n⏳ فعال سازی کمتر از ۱ ساعت\n📄 ضمانت با صدور فاکتور رسمی\n\n📌 مدت مورد نظر را انتخاب کنید:", keyboard)

def free_member_menu(message):
    user_id = message.chat.id
    invite_count = db_query('SELECT invite_count FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
    if invite_count:
        invite_count = invite_count[0]
    else:
        invite_count = 0
    remaining = 20 - invite_count
    
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("🔗 ساخت لینک دعوت", callback_data='make_invite', style='primary'),
        types.InlineKeyboardButton("🔄 بررسی مجدد", callback_data='check_invite', style='primary'),
        types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger')
    )
    
    if invite_count >= 20:
        used = db_query('SELECT used_free_member FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
        if used and used[0] == 1:
            text = "❌ شما قبلاً از سرویس ممبر رایگان استفاده کرده‌اید!"
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger'))
            send_menu(user_id, text, keyboard)
            return
        
        text = f"🎉 **تبریک! شما ۲۰ نفر رو دعوت کردید!** 🎉\n\nشما موفق به دریافت ۵۰۰ ممبر رایگان شدید!\n\n📌 لطفاً برای دریافت، روی دکمه زیر کلیک کنید:"
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("🎁 دریافت ممبر رایگان", callback_data='claim_free_member', style='success'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger')
        )
        send_menu(user_id, text, keyboard)
    else:
        text = f"🎁 **ممبر رایگان با دعوت**\n\n۲۰ نفر از دوستانت رو دعوت کن و ۵۰۰ ممبر رایگان دریافت کن! 💪\n\n📊 وضعیت دعوت شما:\n👥 تعداد دعوت‌ها: {invite_count} نفر\n🎯 باقی‌مونده: {remaining} نفر"
        send_menu(user_id, text, keyboard)

def check_and_start(message):
    user_id = message.chat.id
    if is_user_blocked(user_id):
        bot.send_message(user_id, "🚫 شما توسط ادمین مسدود شده‌اید!")
        return False
    if not check_membership(user_id):
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📢 عضویت در کانال", url=CHANNEL_LINK, style='primary'),
            types.InlineKeyboardButton("✅ عضو شدم", callback_data='check_membership', style='success')
        )
        send_menu(user_id, f"⚠️ سلام {message.from_user.first_name} عزیز!\n\nلطفا برای استفاده از خدمات عضو کانال ما بشید و سپس دکمه عضو شدم را بزنید\n\n📢 @ramcoderteam", keyboard)
        return False
    return True

@bot.message_handler(commands=['start'])
def start(message):
    user_id = message.chat.id
    text = message.text
    
    db_query('INSERT OR IGNORE INTO users (user_id, username, first_name, join_date) VALUES (?, ?, ?, ?)', 
             (user_id, message.from_user.username, message.from_user.first_name, datetime.now().isoformat()), commit=True)
    
    if 'start invite_' in text:
        ref_code = text.split('invite_')[1]
        try:
            ref_user_id = int(ref_code.split('_')[0])
            if ref_user_id != user_id:
                db_query('UPDATE users SET invite_count = invite_count + 1 WHERE user_id = ?', (ref_user_id,), commit=True)
                invite_count = db_query('SELECT invite_count FROM users WHERE user_id = ?', (ref_user_id,), fetch_one=True)
                if invite_count and invite_count[0] >= 20:
                    db_query('UPDATE users SET used_free_member = 1 WHERE user_id = ?', (ref_user_id,), commit=True)
                    bot.send_message(ref_user_id, "🎉 **تبریک!**\n\nشما ۲۰ نفر رو دعوت کردید و ۵۰۰ ممبر رایگان دریافت کردید! 🎁")
                else:
                    bot.send_message(ref_user_id, f"🎉 یک کاربر جدید با لینک دعوت شما وارد شد!\n\n👥 {invite_count[0] if invite_count else 0}/20 نفر دعوت کردید.")
        except:
            pass
    
    if not check_and_start(message):
        return
    
    welcome = get_setting('welcome_text')
    if welcome:
        welcome = welcome.replace('{first_name}', message.from_user.first_name)
    else:
        welcome = f"سلام {message.from_user.first_name} عزیز! به ربات رم‌کدر خوش اومدی 🌟"
    
    main_menu(message)

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    user_id = call.from_user.id
    data = call.data

    if data == 'check_membership':
        if check_membership(user_id):
            bot.delete_message(user_id, call.message.message_id)
            start(call.message)
        else:
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            keyboard.add(
                types.InlineKeyboardButton("📢 عضویت در کانال", url=CHANNEL_LINK, style='primary'),
                types.InlineKeyboardButton("✅ عضو شدم", callback_data='check_membership', style='success')
            )
            bot.edit_message_text("❌ شما هنوز عضو کانال نشدید!", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'back_main':
        main_menu(call.message)
        return

    if data == 'back_new_order':
        new_order_menu(call.message)
        return

    if data == 'prices':
        prices_menu(call.message)
        return

    if data == 'about_us':
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger'))
        text = get_setting('about_text')
        if not text:
            text = "💎 تیم رام‌کدر (RamCoder) 💎\n\nما از سال ۱۳۹۸ فعالیت خود را در حوزه خدمات دیجیتال و تبلیغات تلگرامی آغاز کردیم."
        bot.delete_message(user_id, call.message.message_id)
        send_menu(user_id, text, keyboard)
        return

    if data == 'send_ticket':
        if is_user_blocked(user_id):
            bot.answer_callback_query(call.id, "🚫 شما مسدود هستید!", show_alert=True)
            return
        last_ticket = db_query('SELECT created_at FROM tickets WHERE user_id = ? ORDER BY created_at DESC LIMIT 1', (user_id,), fetch_one=True)
        if last_ticket:
            try:
                last_time = datetime.strptime(last_ticket[0], '%Y-%m-%d %H:%M:%S.%f')
                now = datetime.now()
                diff = (now - last_time).total_seconds()
                if diff < 3600:
                    remaining = int(3600 - diff)
                    minutes = remaining // 60
                    seconds = remaining % 60
                    bot.answer_callback_query(call.id, f"⏳ لطفاً {minutes} دقیقه و {seconds} ثانیه دیگر صبر کنید.", show_alert=True)
                    return
            except:
                pass
        
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "📝 لطفاً پیام خود را بنویسید:\n(حداکثر ۵۰۰ کاراکتر)")
        bot.register_next_step_handler(msg, process_ticket)
        return

    if data == 'new_order':
        new_order_menu(call.message)
        return

    if data == 'telegram_member':
        member_menu(call.message)
        return

    if data == 'real_member':
        user_temp_data[user_id] = {'member_type': 'real', 'price_per_1000': 255000, 'step': 'member_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_member', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "👥 **ممبر واقعی**\n\n💰 قیمت: هر ۱۰۰۰ نفر = ۲۵۵,۰۰۰ تومان\n⏳ زمان: ۳ تا ۸ ساعت\n📊 محدوده: ۱۰۰۰ تا ۱۰۰,۰۰۰\n\n✏️ تعداد ممبر مورد نظر را وارد کنید (فقط عدد):", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_member_count)
        return

    if data == 'fake_member':
        user_temp_data[user_id] = {'member_type': 'fake', 'price_per_1000': 160000, 'step': 'member_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_member', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "👥 **ممبر فیک**\n\n💰 قیمت: هر ۱۰۰۰ نفر = ۱۶۰,۰۰۰ تومان\n⏳ زمان: ۱ تا ۳ ساعت\n📊 محدوده: ۱۰۰۰ تا ۱۰۰,۰۰۰\n\n✏️ تعداد ممبر مورد نظر را وارد کنید (فقط عدد):", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_member_count)
        return

    if data == 'telegram_view':
        view_menu(call.message)
        return

    if data == 'view_single':
        user_temp_data[user_id] = {'view_type': 'single', 'step': 'view_link'}
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🔗 لطفاً لینک پست خود را وارد کنید:\n📝 مثال: https://t.me/yourchannel/123")
        bot.register_next_step_handler(msg, process_view_link)
        return

    if data == 'view_multi':
        user_temp_data[user_id] = {'view_type': 'multi', 'step': 'view_channel'}
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🔗 لطفاً لینک کانال خود را وارد کنید:\n📝 مثال: https://t.me/yourchannel\n\nسپس تعداد پست‌های اخیر برای بازدید را وارد کنید:\n(حداکثر ۱۰ پست)")
        bot.register_next_step_handler(msg, process_view_channel)
        return

    if data == 'telegram_ads':
        ads_menu(call.message)
        return

    if data == 'ads_search':
        user_temp_data[user_id] = {'ads_type': 'search', 'step': 'ads_search_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_ads', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🔍 **تبلیغ در سرچ**\n\n💰 هزینه: هر ۵,۰۰۰ بازدید = ۵۵۰,۰۰۰ تومان\n📊 تعداد بازدید: بین ۱,۰۰۰ تا ۵۰,۰۰۰\n⏳ زمان انجام: ۱ تا ۷۲ ساعت\n\n✏️ تعداد بازدید مورد نظر را وارد کنید (فقط عدد):", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_search_count)
        return

    if data == 'ads_channel':
        user_temp_data[user_id] = {'ads_type': 'channel', 'step': 'ads_channel_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_ads', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "📢 **تبلیغ در کانال‌های هدف**\n\n💰 هزینه: هر ۱۰,۰۰۰ بازدید = ۷۵۰,۰۰۰ تومان\n📊 تعداد بازدید: بین ۱,۰۰۰ تا ۵۰,۰۰۰\n⏳ زمان انجام: ۱ تا ۷۲ ساعت\n\n✏️ تعداد بازدید مورد نظر را وارد کنید (فقط عدد):", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_channel_count)
        return

    if data == 'ads_robot':
        user_temp_data[user_id] = {'ads_type': 'robot', 'step': 'ads_robot_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_ads', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🤖 **تبلیغ در ربات‌های هدف**\n\n💰 هزینه: هر ۱۰,۰۰۰ بازدید = ۷۵۰,۰۰۰ تومان\n📊 تعداد بازدید: بین ۱,۰۰۰ تا ۵۰,۰۰۰\n⏳ زمان انجام: ۱ تا ۷۲ ساعت\n\n✏️ تعداد بازدید مورد نظر را وارد کنید (فقط عدد):", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_robot_count)
        return

    if data == 'ads_adult':
        ads_adult_menu(call.message)
        return

    if data == 'ads_adult_search':
        user_temp_data[user_id] = {'ads_type': 'adult_search', 'step': 'ads_adult_search_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='ads_adult', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🔍 **تبلیغ در سرچ (بزرگسالان)**\n\n💰 هزینه: هر ۵,۰۰۰ بازدید = ۵۵۰,۰۰۰ تومان\n💰 هزینه استارت‌کار: ۵,۵۰۰,۰۰۰ تومان (یکبار)\n📊 محدوده: ۱,۰۰۰ تا ۵۰,۰۰۰ بازدید\n\n✏️ تعداد بازدید مورد نظر را وارد کنید:", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_adult_count)
        return

    if data == 'ads_adult_channel':
        user_temp_data[user_id] = {'ads_type': 'adult_channel', 'step': 'ads_adult_channel_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='ads_adult', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "📢 **تبلیغ در کانال‌های هدف (بزرگسالان)**\n\n💰 هزینه: هر ۱۰,۰۰۰ بازدید = ۷۵۰,۰۰۰ تومان\n💰 هزینه استارت‌کار: ۵,۵۰۰,۰۰۰ تومان (یکبار)\n📊 محدوده: ۱,۰۰۰ تا ۵۰,۰۰۰ بازدید\n\n✏️ تعداد بازدید مورد نظر را وارد کنید:", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_adult_count)
        return

    if data == 'ads_adult_robot':
        user_temp_data[user_id] = {'ads_type': 'adult_robot', 'step': 'ads_adult_robot_count'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='ads_adult', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🤖 **تبلیغ در ربات‌های هدف (بزرگسالان)**\n\n💰 هزینه: هر ۱۰,۰۰۰ بازدید = ۷۵۰,۰۰۰ تومان\n💰 هزینه استارت‌کار: ۵,۵۰۰,۰۰۰ تومان (یکبار)\n📊 محدوده: ۱,۰۰۰ تا ۵۰,۰۰۰ بازدید\n\n✏️ تعداد بازدید مورد نظر را وارد کنید:", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_ads_adult_count)
        return

    if data == 'telegram_tick':
        tick_menu(call.message)
        return

    if data.startswith('tick_'):
        months = int(data.split('_')[1])
        prices = {3: 3400000, 6: 5400000, 9: 7600000}
        price = prices[months]
        user_temp_data[user_id] = {'tick_months': months, 'tick_price': price, 'step': 'tick_id'}
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='telegram_tick', style='danger'))
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, f"✅ **تیک آبی {months} ماهه**\n\n💰 مبلغ: {format_price(price)} تومان\n\n👤 لطفاً آیدی تلگرامی که میخواید تیک آبی روش فعال بشه رو وارد کنید:\n📝 مثال: @username", parse_mode=None, reply_markup=keyboard)
        bot.register_next_step_handler(msg, process_tick_id)
        return

    if data == 'free_member':
        free_member_menu(call.message)
        return

    if data == 'make_invite':
        ref_code = generate_referral_code(user_id)
        invite_link = f"https://t.me/ramcoderbot?start=invite_{ref_code}"
        
        text = f"🔗 **لینک دعوت شما**\n\n📋 **متن دعوت:**\nسلام! 👋\nمن از این ربات استفاده میکنم و کلی قابلیت برای افزایش ممبر و دیده شدن کانالم داره!\nتو هم ربات رو استارت بزن و ۵۰۰ ممبر رایگان دریافت کن! 🎁\n\n🤖 لینک ربات: https://t.me/ramcoderbot\n\n🔗 لینک دعوت من:\n{invite_link}\n\n📌 **برای کپی کردن، روی دکمه زیر کلیک کنید:**"
        
        keyboard = types.InlineKeyboardMarkup()
        keyboard.add(
            types.InlineKeyboardButton(
                "📋 کپی لینک و متن",
                callback_data='copy_invite',
                style='primary'
            ),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='free_member', style='danger')
        )
        
        user_temp_data[user_id] = {'invite_link': invite_link}
        bot.delete_message(user_id, call.message.message_id)
        send_menu(user_id, text, keyboard)
        return

    if data == 'copy_invite':
        invite_link = user_temp_data.get(user_id, {}).get('invite_link', '')
        if not invite_link:
            bot.answer_callback_query(call.id, "❌ لینکی یافت نشد!", show_alert=True)
            return
        
        text_to_copy = f"سلام! 👋\nمن از این ربات استفاده میکنم و کلی قابلیت برای افزایش ممبر و دیده شدن کانالم داره!\nتو هم ربات رو استارت بزن و ۵۰۰ ممبر رایگان دریافت کن! 🎁\n\n🤖 لینک ربات: https://t.me/ramcoderbot\n\n🔗 لینک دعوت من:\n{invite_link}"
        
        bot.answer_callback_query(call.id, f"✅ متن کپی شد!\n\n{text_to_copy}", show_alert=True)
        return

    if data == 'check_invite':
        invite_count = db_query('SELECT invite_count FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
        if invite_count:
            invite_count = invite_count[0]
        else:
            invite_count = 0
        remaining = 20 - invite_count
        if invite_count >= 20:
            bot.answer_callback_query(call.id, "🎉 شما ۲۰ نفر رو دعوت کردی! برو دریافت کن!", show_alert=True)
            free_member_menu(call.message)
        else:
            bot.answer_callback_query(call.id, f"👥 {invite_count} نفر دعوت کردی! {remaining} نفر دیگه مونده!", show_alert=True)
        return

    if data == 'claim_free_member':
        used = db_query('SELECT used_free_member FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
        if used and used[0] == 1:
            bot.answer_callback_query(call.id, "❌ شما قبلاً از این سرویس استفاده کردید!", show_alert=True)
            return
        invite_count = db_query('SELECT invite_count FROM users WHERE user_id = ?', (user_id,), fetch_one=True)
        if not invite_count or invite_count[0] < 20:
            bot.answer_callback_query(call.id, "❌ هنوز ۲۰ نفر رو دعوت نکردی!", show_alert=True)
            return
        bot.delete_message(user_id, call.message.message_id)
        msg = bot.send_message(user_id, "🔗 لطفاً لینک یا آیدی کانال خود را وارد کنید:\n📝 مثال: https://t.me/yourchannel")
        bot.register_next_step_handler(msg, process_free_member)
        return

    if data.startswith('pay_card_'):
        tracking_code = data.replace('pay_card_', '')
        order = db_query('SELECT title, price FROM orders WHERE tracking_code = ?', (tracking_code,), fetch_one=True)
        if order:
            keyboard = types.InlineKeyboardMarkup()
            keyboard.add(
                types.InlineKeyboardButton("پرداخت کردم", callback_data=f'payment_done_{tracking_code}', style='success'),
                types.InlineKeyboardButton("بازگشت", callback_data='back_main', style='danger')
            )
            bot.delete_message(user_id, call.message.message_id)
            send_menu(user_id, f"📋 **خلاصه سفارش شما**\n\n• نوع: {order[0]}\n• مبلغ: {format_price(order[1])} تومان\n\n💳 شماره کارت: {CARD_NUMBER}\n\n📌 پس از واریز، روی دکمه 'پرداخت کردم' کلیک کنید.", keyboard)
        return

    if data.startswith('payment_done_'):
        tracking_code = data.replace('payment_done_', '')
        user_temp_data[user_id] = {'tracking_code': tracking_code, 'step': 'waiting_screenshot'}
        bot.delete_message(user_id, call.message.message_id)
        send_menu(user_id, f"✅ لطفاً تصویر اسکرین‌شات واریز را ارسال کنید.", types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger')))
        return

    if data == 'admin_panel':
        if not is_admin(user_id):
            bot.answer_callback_query(call.id, "❌ شما دسترسی ندارید!", show_alert=True)
            return
        admin_panel_menu(user_id, call.message)
        return

    if data == 'admin_orders':
        if not is_admin(user_id):
            return
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📋 لیست همه سفارشات", callback_data='admin_orders_list', style='primary'),
            types.InlineKeyboardButton("⏳ سفارشات در انتظار تایید", callback_data='admin_orders_pending', style='primary'),
            types.InlineKeyboardButton("📝 سفارشات نیمه‌کاره", callback_data='admin_orders_pending_no_screenshot', style='primary'),
            types.InlineKeyboardButton("✅ سفارشات تایید شده", callback_data='admin_orders_approved', style='primary'),
            types.InlineKeyboardButton("❌ سفارشات رد شده", callback_data='admin_orders_rejected', style='primary'),
            types.InlineKeyboardButton("🔍 جستجوی سفارش", callback_data='admin_orders_search', style='primary'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='admin_panel', style='danger')
        )
        bot.edit_message_text("🛒 **مدیریت سفارشات**\n\nلطفاً یکی از گزینه‌ها را انتخاب کنید:", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'admin_orders_list':
        if not is_admin(user_id):
            return
        orders = db_query('SELECT tracking_code, user_id, title, price, status FROM orders ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not orders:
            bot.send_message(user_id, "📋 هیچ سفارشی یافت نشد!")
            return
        text = "📋 **آخرین سفارشات (۲۰ مورد)**\n\n"
        status_emoji = {'pending': '⏳', 'waiting_approval': '🔄', 'approved': '✅', 'rejected': '❌'}
        for order in orders:
            text += f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان\n📊 {status_emoji.get(order[4], '❓')}\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_orders_pending':
        if not is_admin(user_id):
            return
        orders = db_query('SELECT tracking_code, user_id, title, price, status FROM orders WHERE status = "waiting_approval" ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not orders:
            bot.answer_callback_query(call.id, "✅ هیچ سفارش در انتظاری وجود ندارد!", show_alert=True)
            return
        for order in orders[:10]:
            keyboard = types.InlineKeyboardMarkup(row_width=2)
            keyboard.add(
                types.InlineKeyboardButton("✅ تایید", callback_data=f'admin_approve_{order[0]}', style='success'),
                types.InlineKeyboardButton("❌ رد", callback_data=f'admin_reject_{order[0]}', style='danger')
            )
            bot.send_message(user_id, f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان", reply_markup=keyboard)
        return

    if data == 'admin_orders_pending_no_screenshot':
        if not is_admin(user_id):
            return
        orders = db_query('SELECT tracking_code, user_id, title, price, status FROM orders WHERE status = "pending" ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not orders:
            bot.answer_callback_query(call.id, "✅ هیچ سفارش نیمه‌کاره‌ای وجود ندارد!", show_alert=True)
            return
        text = "📝 **سفارشات نیمه‌کاره (بدون اسکرین)**\n\n"
        for order in orders[:10]:
            text += f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_orders_approved':
        if not is_admin(user_id):
            return
        orders = db_query('SELECT tracking_code, user_id, title, price, status FROM orders WHERE status = "approved" ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not orders:
            bot.answer_callback_query(call.id, "✅ هیچ سفارش تایید شده‌ای وجود ندارد!", show_alert=True)
            return
        text = "✅ **سفارشات تایید شده**\n\n"
        for order in orders[:10]:
            text += f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_orders_rejected':
        if not is_admin(user_id):
            return
        orders = db_query('SELECT tracking_code, user_id, title, price, status, admin_note FROM orders WHERE status = "rejected" ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not orders:
            bot.answer_callback_query(call.id, "✅ هیچ سفارش رد شده‌ای وجود ندارد!", show_alert=True)
            return
        text = "❌ **سفارشات رد شده (با دلیل)**\n\n"
        for order in orders[:10]:
            text += f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان\n🔍 دلیل: {order[5] if order[5] else 'نامشخص'}\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_orders_search':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "🔍 کد پیگیری یا یوزرنیم کاربر را وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_search_order)
        return

    if data.startswith('admin_approve_'):
        if not is_admin(user_id):
            return
        tracking_code = data.replace('admin_approve_', '')
        db_query('UPDATE orders SET status = "approved", updated_at = ? WHERE tracking_code = ?', (datetime.now().isoformat(), tracking_code), commit=True)
        order = db_query('SELECT user_id, title, price FROM orders WHERE tracking_code = ?', (tracking_code,), fetch_one=True)
        if order:
            bot.send_message(order[0], f"✅ **سفارش شما تایید شد!** 🎉\n\n🔑 کد پیگیری: {tracking_code}\n📋 سفارش: {order[1]}\n💰 مبلغ: {format_price(order[2])} تومان\n\n⏳ وضعیت: در حال انجام...", parse_mode=None)
        bot.answer_callback_query(call.id, f"✅ سفارش {tracking_code} تایید شد!", show_alert=True)
        bot.edit_message_text(f"✅ سفارش {tracking_code} تایید شد!", user_id, call.message.message_id)
        return

    if data.startswith('admin_reject_'):
        if not is_admin(user_id):
            return
        tracking_code = data.replace('admin_reject_', '')
        user_temp_data[user_id] = {'reject_tracking': tracking_code, 'step': 'admin_reject_reason'}
        msg = bot.send_message(user_id, f"❌ لطفاً دلیل رد سفارش {tracking_code} را وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_reject_reason)
        return

    if data == 'admin_users':
        if not is_admin(user_id):
            return
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📋 لیست کاربران", callback_data='admin_users_list', style='primary'),
            types.InlineKeyboardButton("🔍 جستجوی کاربر", callback_data='admin_users_search', style='primary'),
            types.InlineKeyboardButton("📨 ارسال پیام به کاربر", callback_data='admin_users_send', style='primary'),
            types.InlineKeyboardButton("🚫 مسدود کردن کاربر", callback_data='admin_users_block', style='danger'),
            types.InlineKeyboardButton("✅ رفع مسدودی کاربر", callback_data='admin_users_unblock', style='success'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='admin_panel', style='danger')
        )
        bot.edit_message_text("👥 **مدیریت کاربران**\n\nلطفاً یکی از گزینه‌ها را انتخاب کنید:", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'admin_users_list':
        if not is_admin(user_id):
            return
        users = db_query('SELECT user_id, username, first_name, join_date, is_blocked FROM users ORDER BY user_id DESC LIMIT 20', fetch_all=True)
        if not users:
            bot.send_message(user_id, "📋 هیچ کاربری یافت نشد!")
            return
        text = "📋 **لیست کاربران (۲۰ مورد اخیر)**\n\n"
        for user in users:
            status = "🚫" if user[4] == 1 else "✅"
            text += f"{status} 🆔 {user[0]}\n👤 {user[1] or 'ندارد'}\n📛 {user[2]}\n📅 {user[3]}\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_users_search':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "🔍 آیدی عددی یا یوزرنیم کاربر را وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_search_user)
        return

    if data == 'admin_users_send':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "📨 آیدی عددی یا یوزرنیم کاربر را وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_send_to_user)
        return

    if data == 'admin_users_block':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "🚫 آیدی عددی یا یوزرنیم کاربر را برای مسدود کردن وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_block_user)
        return

    if data == 'admin_users_unblock':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "✅ آیدی عددی یا یوزرنیم کاربر را برای رفع مسدودی وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_unblock_user)
        return

    if data == 'admin_broadcast':
        if not is_admin(user_id):
            return
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📝 ارسال متن", callback_data='broadcast_text', style='primary'),
            types.InlineKeyboardButton("📸 ارسال با عکس", callback_data='broadcast_photo', style='primary'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='admin_panel', style='danger')
        )
        bot.edit_message_text("📢 **ارسال همگانی**\n\nلطفاً نوع ارسال را انتخاب کنید:", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'broadcast_text':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "📝 لطفاً متن پیام را وارد کنید:")
        bot.register_next_step_handler(msg, process_broadcast_text)
        return

    if data == 'broadcast_photo':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "📸 لطفاً عکس را ارسال کنید و سپس متن پیام را وارد کنید:")
        bot.register_next_step_handler(msg, process_broadcast_photo)
        return

    if data == 'admin_tickets':
        if not is_admin(user_id):
            return
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📩 تیکت‌های باز", callback_data='admin_tickets_open', style='primary'),
            types.InlineKeyboardButton("📋 تاریخچه تیکت‌ها", callback_data='admin_tickets_history', style='primary'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='admin_panel', style='danger')
        )
        bot.edit_message_text("📞 **مدیریت تیکت‌ها**\n\nلطفاً یکی از گزینه‌ها را انتخاب کنید:", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'admin_tickets_open':
        if not is_admin(user_id):
            return
        tickets = db_query('SELECT id, user_id, message, status, created_at FROM tickets WHERE status = "open" ORDER BY id DESC LIMIT 10', fetch_all=True)
        if not tickets:
            bot.answer_callback_query(call.id, "✅ هیچ تیکت باز وجود ندارد!", show_alert=True)
            return
        for ticket in tickets:
            keyboard = types.InlineKeyboardMarkup(row_width=1)
            keyboard.add(
                types.InlineKeyboardButton("✅ پاسخ", callback_data=f'ticket_reply_{ticket[0]}', style='success'),
                types.InlineKeyboardButton("❌ بستن", callback_data=f'ticket_close_{ticket[0]}', style='danger')
            )
            bot.send_message(user_id, f"🆔 {ticket[0]}\n👤 {ticket[1]}\n📝 {ticket[2]}\n📊 {ticket[3]}\n📅 {ticket[4]}", reply_markup=keyboard)
        return

    if data == 'admin_tickets_history':
        if not is_admin(user_id):
            return
        tickets = db_query('SELECT id, user_id, message, status, created_at, admin_response FROM tickets ORDER BY id DESC LIMIT 20', fetch_all=True)
        if not tickets:
            bot.send_message(user_id, "📋 هیچ تیکتی وجود ندارد!")
            return
        text = "📋 **تاریخچه تیکت‌ها**\n\n"
        for ticket in tickets:
            status_emoji = {'open': '🟡', 'answered': '🟢', 'closed': '🔴'}
            text += f"{status_emoji.get(ticket[3], '❓')} 🆔 {ticket[0]}\n👤 {ticket[1]}\n📝 {ticket[2][:50]}...\n📊 {ticket[3]}\n📅 {ticket[4]}\n"
            if ticket[5]:
                text += f"📩 پاسخ: {ticket[5][:50]}...\n"
            text += "\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data.startswith('ticket_reply_'):
        if not is_admin(user_id):
            return
        ticket_id = data.replace('ticket_reply_', '')
        user_temp_data[user_id] = {'ticket_id': ticket_id, 'step': 'admin_ticket_reply'}
        msg = bot.send_message(user_id, f"📝 پاسخ خود را برای تیکت {ticket_id} وارد کنید:")
        bot.register_next_step_handler(msg, process_admin_ticket_reply)
        return

    if data.startswith('ticket_close_'):
        if not is_admin(user_id):
            return
        ticket_id = data.replace('ticket_close_', '')
        db_query('UPDATE tickets SET status = "closed", updated_at = ? WHERE id = ?', (datetime.now().isoformat(), ticket_id), commit=True)
        bot.answer_callback_query(call.id, f"✅ تیکت {ticket_id} بسته شد!", show_alert=True)
        bot.edit_message_text(f"✅ تیکت {ticket_id} بسته شد!", user_id, call.message.message_id)
        return

    if data == 'admin_admins':
        if not is_admin(user_id):
            return
        keyboard = types.InlineKeyboardMarkup(row_width=1)
        keyboard.add(
            types.InlineKeyboardButton("📋 لیست ادمین‌ها", callback_data='admin_admins_list', style='primary'),
            types.InlineKeyboardButton("➕ افزودن ادمین جدید", callback_data='admin_admins_add', style='success'),
            types.InlineKeyboardButton("❌ حذف ادمین", callback_data='admin_admins_remove', style='danger'),
            types.InlineKeyboardButton("🔙 بازگشت", callback_data='admin_panel', style='danger')
        )
        bot.edit_message_text("🛡️ **مدیریت ادمین‌ها**\n\nلطفاً یکی از گزینه‌ها را انتخاب کنید:", user_id, call.message.message_id, parse_mode=None, reply_markup=keyboard)
        return

    if data == 'admin_admins_list':
        if not is_admin(user_id):
            return
        admins = db_query('SELECT user_id FROM admins', fetch_all=True)
        if not admins:
            bot.send_message(user_id, "📋 هیچ ادمینی ثبت نشده است!")
            return
        text = "📋 **لیست ادمین‌ها**\n\n"
        for admin in admins:
            try:
                user = bot.get_chat(admin[0])
                text += f"🆔 {admin[0]}\n👤 {user.first_name}\n\n"
            except:
                text += f"🆔 {admin[0]}\n\n"
        bot.send_message(user_id, text, parse_mode=None)
        return

    if data == 'admin_admins_add':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "➕ آیدی عددی ادمین جدید را وارد کنید:")
        bot.register_next_step_handler(msg, process_add_admin)
        return

    if data == 'admin_admins_remove':
        if not is_admin(user_id):
            return
        msg = bot.send_message(user_id, "❌ آیدی عددی ادمین را برای حذف وارد کنید:")
        bot.register_next_step_handler(msg, process_remove_admin)
        return

def process_ticket(message):
    user_id = message.chat.id
    text = message.text.strip()
    
    if len(text) > 500:
        bot.send_message(user_id, "❌ پیام شما بیشتر از ۵۰۰ کاراکتر است!")
        return
    
    db_query('INSERT INTO tickets (user_id, message, status, created_at) VALUES (?, ?, ?, ?)', 
             (user_id, text, 'open', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    send_menu(user_id, "✅ پیام شما ارسال شد! به زودی پاسخ داده می‌شود.", types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger')))
    
    for admin in ADMIN_IDS:
        bot.send_message(admin, f"📩 **تیکت جدید**\n\n👤 {user_id}\n📝 {text}")

def process_member_count(message):
    user_id = message.chat.id
    try:
        count = int(message.text.strip())
        if count < 1000 or count > 100000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۱۰۰,۰۰۰ باشد!")
            return
        
        data = user_temp_data.get(user_id, {})
        if not data:
            bot.send_message(user_id, "❌ خطا در اطلاعات! لطفاً دوباره شروع کنید.")
            return
        
        price_per_1000 = data.get('price_per_1000', 255000)
        price = int((count / 1000) * price_per_1000)
        
        user_temp_data[user_id]['member_count'] = count
        user_temp_data[user_id]['member_price'] = price
        user_temp_data[user_id]['step'] = 'member_link'
        
        bot.delete_message(user_id, message.message_id)
        msg = bot.send_message(user_id, f"✅ تعداد: {count:,} نفر\n💰 مبلغ: {format_price(price)} تومان\n\n🔗 لینک کانال خود را وارد کنید:\n📝 مثال: @yourchannel")
        bot.register_next_step_handler(msg, process_member_link)
    except Exception as e:
        logging.error(f"Error in member_count: {e}")
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_member_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    username = extract_username(link)
    
    if not username:
        bot.send_message(user_id, "❌ لینک معتبر نیست! لطفاً دوباره وارد کنید:")
        bot.register_next_step_handler(message, process_member_link)
        return
    
    data = user_temp_data.get(user_id, {})
    data['member_link'] = username
    user_temp_data[user_id] = data
    
    tracking = generate_tracking_code()
    is_real = data.get('member_type') == 'real'
    title = f"{'واقعی' if is_real else 'فیک'} ممبر - {data.get('member_count', 0)} نفر"
    price = data.get('member_price', 0)
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'member', title, price, data.get('member_count', 0), f"لینک: {username}", 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n🔗 {username}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

def show_payment_options(user_id, tracking_code, title, price):
    keyboard = types.InlineKeyboardMarkup(row_width=1)
    keyboard.add(
        types.InlineKeyboardButton("پرداخت کردم", callback_data=f'payment_done_{tracking_code}', style='success'),
        types.InlineKeyboardButton("بازگشت", callback_data='back_main', style='danger')
    )
    text = f"📋 **خلاصه سفارش شما**\n\n• نوع: {title}\n• مبلغ: {format_price(price)} تومان\n\n💳 شماره کارت: {CARD_NUMBER}\n\n📌 پس از واریز، روی دکمه 'پرداخت کردم' کلیک کنید."
    send_menu(user_id, text, keyboard)

def process_free_member(message):
    user_id = message.chat.id
    link = message.text.strip()
    
    tracking = generate_tracking_code()
    db_query('UPDATE users SET used_free_member = 1 WHERE user_id = ?', (user_id,), commit=True)
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'free_member', 'ممبر رایگان', 0, 500, f"لینک: {link}", 'waiting_approval', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش ممبر رایگان شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        keyboard = types.InlineKeyboardMarkup(row_width=2)
        keyboard.add(
            types.InlineKeyboardButton("✅ تایید", callback_data=f'admin_approve_{tracking}', style='success'),
            types.InlineKeyboardButton("❌ رد", callback_data=f'admin_reject_{tracking}', style='danger')
        )
        bot.send_message(admin, f"🎁 **سفارش ممبر رایگان**\n\n👤 {user_id}\n🔗 {link}\n🔑 {tracking}", parse_mode=None, reply_markup=keyboard)

def process_tick_id(message):
    user_id = message.chat.id
    username = message.text.strip()
    
    if not username.startswith('@'):
        bot.send_message(user_id, "❌ آیدی باید با @ شروع شود!")
        return
    
    data = user_temp_data.get(user_id, {})
    months = data.get('tick_months', 3)
    price = data.get('tick_price', 3400000)
    
    tracking = generate_tracking_code()
    title = f"تیک آبی {months} ماهه"
    details = f"آیدی: {username}"
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'tick', title, price, 1, details, 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        keyboard = types.InlineKeyboardMarkup(row_width=2)
        keyboard.add(
            types.InlineKeyboardButton("✅ تایید", callback_data=f'admin_approve_{tracking}', style='success'),
            types.InlineKeyboardButton("❌ رد", callback_data=f'admin_reject_{tracking}', style='danger')
        )
        bot.send_message(admin, f"✅ **سفارش تیک آبی**\n\n👤 {user_id}\n📆 {months} ماهه\n💰 {format_price(price)} تومان\n🔑 {tracking}\n👤 {username}", parse_mode=None, reply_markup=keyboard)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

def process_admin_reject_reason(message):
    user_id = message.chat.id
    reason = message.text.strip()
    tracking_code = user_temp_data.get(user_id, {}).get('reject_tracking', '')
    
    if not tracking_code:
        bot.send_message(user_id, "❌ خطا! دوباره تلاش کنید.")
        return
    
    db_query('UPDATE orders SET status = "rejected", admin_note = ?, updated_at = ? WHERE tracking_code = ?',
             (reason, datetime.now().isoformat(), tracking_code), commit=True)
    
    order = db_query('SELECT user_id, title, price FROM orders WHERE tracking_code = ?', (tracking_code,), fetch_one=True)
    
    if order:
        bot.send_message(order[0], f"❌ **سفارش شما رد شد!**\n\n🔑 {tracking_code}\n📋 {order[1]}\n💰 {format_price(order[2])} تومان\n\n🔍 دلیل: {reason}", parse_mode=None)
    
    bot.send_message(user_id, f"✅ سفارش {tracking_code} رد شد!")
    del user_temp_data[user_id]

def process_admin_search_order(message):
    user_id = message.chat.id
    query = message.text.strip()
    
    orders = db_query('SELECT tracking_code, user_id, title, price, status FROM orders WHERE tracking_code LIKE ? OR user_id LIKE ?',
                      (f'%{query}%', f'%{query}%'), fetch_all=True)
    
    if not orders:
        bot.send_message(user_id, "❌ سفارشی یافت نشد!")
        return
    
    text = "📋 **نتایج جستجو**\n\n"
    status_emoji = {'pending': '⏳', 'waiting_approval': '🔄', 'approved': '✅', 'rejected': '❌'}
    
    for order in orders:
        text += f"🔑 {order[0]}\n👤 {order[1]}\n📋 {order[2]}\n💰 {format_price(order[3])} تومان\n📊 {status_emoji.get(order[4], '❓')}\n\n"
    
    bot.send_message(user_id, text, parse_mode=None)

def process_admin_search_user(message):
    user_id = message.chat.id
    query = message.text.strip()
    
    user = db_query('SELECT user_id, username, first_name, join_date, invite_count, is_blocked FROM users WHERE user_id = ? OR username LIKE ?',
                    (query if query.isdigit() else 0, f'%{query}%'), fetch_one=True)
    
    if not user:
        bot.send_message(user_id, "❌ کاربری یافت نشد!")
        return
    
    status = "🚫 مسدود" if user[5] == 1 else "✅ فعال"
    text = f"👤 **اطلاعات کاربر**\n\n🆔 {user[0]}\n👤 {user[1] or 'ندارد'}\n📛 {user[2]}\n📅 {user[3]}\n📊 دعوت‌ها: {user[4]}\n📌 وضعیت: {status}\n\n"
    
    orders = db_query('SELECT tracking_code, title, price, status FROM orders WHERE user_id = ? ORDER BY id DESC LIMIT 5', (user[0],), fetch_all=True)
    
    if orders:
        text += "📋 **آخرین سفارشات:**\n"
        status_emoji = {'pending': '⏳', 'waiting_approval': '🔄', 'approved': '✅', 'rejected': '❌'}
        for order in orders:
            text += f"🔑 {order[0]}\n📋 {order[1]}\n💰 {format_price(order[2])} تومان\n📊 {status_emoji.get(order[3], '❓')}\n\n"
    
    bot.send_message(user_id, text, parse_mode=None)

def process_admin_send_to_user(message):
    user_id = message.chat.id
    target = message.text.strip()
    
    target_id = None
    if target.isdigit():
        target_id = int(target)
    else:
        username = extract_username(target)
        if username:
            user = db_query('SELECT user_id FROM users WHERE username = ?', (username,), fetch_one=True)
            if user:
                target_id = user[0]
    
    if not target_id:
        bot.send_message(user_id, "❌ کاربر یافت نشد!")
        return
    
    user_temp_data[user_id] = {'send_target': target_id, 'step': 'admin_send_message'}
    msg = bot.send_message(user_id, f"📨 لطفاً پیام خود را برای کاربر {target_id} وارد کنید:")
    bot.register_next_step_handler(msg, process_admin_send_message)

def process_admin_send_message(message):
    user_id = message.chat.id
    text = message.text.strip()
    target_id = user_temp_data.get(user_id, {}).get('send_target')
    
    if not target_id:
        bot.send_message(user_id, "❌ خطا! دوباره تلاش کنید.")
        return
    
    try:
        bot.send_message(target_id, f"📨 **پیام از ادمین**\n\n{text}", parse_mode=None)
        bot.send_message(user_id, f"✅ پیام به کاربر {target_id} ارسال شد!")
    except:
        bot.send_message(user_id, f"❌ ارسال پیام به کاربر {target_id} ناموفق بود!")
    
    del user_temp_data[user_id]

def process_admin_block_user(message):
    user_id = message.chat.id
    target = message.text.strip()
    
    target_id = None
    if target.isdigit():
        target_id = int(target)
    else:
        username = extract_username(target)
        if username:
            user = db_query('SELECT user_id FROM users WHERE username = ?', (username,), fetch_one=True)
            if user:
                target_id = user[0]
    
    if not target_id:
        bot.send_message(user_id, "❌ کاربر یافت نشد!")
        return
    
    db_query('UPDATE users SET is_blocked = 1, blocked_reason = "توسط ادمین", blocked_at = ? WHERE user_id = ?', (datetime.now().isoformat(), target_id), commit=True)
    bot.send_message(user_id, f"✅ کاربر {target_id} مسدود شد!")
    try:
        bot.send_message(target_id, "🚫 **شما مسدود شدید!**\n\nدسترسی شما به ربات رم‌کدر به دلیل فعالیت‌های غیرمجاز مسدود شد.\n\n📌 در صورت اعتراض، با پشتیبانی تماس بگیرید.")
    except:
        pass

def process_admin_unblock_user(message):
    user_id = message.chat.id
    target = message.text.strip()
    
    target_id = None
    if target.isdigit():
        target_id = int(target)
    else:
        username = extract_username(target)
        if username:
            user = db_query('SELECT user_id FROM users WHERE username = ?', (username,), fetch_one=True)
            if user:
                target_id = user[0]
    
    if not target_id:
        bot.send_message(user_id, "❌ کاربر یافت نشد!")
        return
    
    db_query('UPDATE users SET is_blocked = 0, unblocked_at = ? WHERE user_id = ?', (datetime.now().isoformat(), target_id), commit=True)
    bot.send_message(user_id, f"✅ مسدودیت کاربر {target_id} برداشته شد!")
    try:
        bot.send_message(target_id, "✅ **مسدودیت شما برداشته شد!**\n\nدسترسی شما به ربات رم‌کدر بازگردانده شد.\n\n📌 حالا می‌توانید از خدمات ربات استفاده کنید.")
    except:
        pass

def process_admin_ticket_reply(message):
    user_id = message.chat.id
    response = message.text.strip()
    ticket_id = user_temp_data.get(user_id, {}).get('ticket_id')
    
    if not ticket_id:
        bot.send_message(user_id, "❌ خطا! دوباره تلاش کنید.")
        return
    
    ticket = db_query('SELECT user_id FROM tickets WHERE id = ?', (ticket_id,), fetch_one=True)
    
    if ticket:
        target_user_id = ticket[0]
        db_query('UPDATE tickets SET admin_response = ?, status = "answered", updated_at = ? WHERE id = ?',
                 (response, datetime.now().isoformat(), ticket_id), commit=True)
        
        try:
            bot.send_message(target_user_id, f"📩 **پاسخ پشتیبانی**\n\n{response}", parse_mode=None)
        except:
            pass
        
        bot.send_message(user_id, f"✅ پاسخ به تیکت {ticket_id} ارسال شد!")
    
    del user_temp_data[user_id]

def process_broadcast_text(message):
    user_id = message.chat.id
    text = message.text.strip()
    users = db_query('SELECT user_id FROM users WHERE is_blocked = 0', fetch_all=True)
    count = 0
    
    for user in users:
        try:
            bot.send_message(user[0], f"📢 **پیام همگانی**\n\n{text}", parse_mode=None)
            count += 1
            time.sleep(0.05)
        except:
            pass
    
    bot.send_message(user_id, f"✅ پیام به {count} نفر ارسال شد!")
    admin_panel_menu(user_id)

def process_broadcast_photo(message):
    user_id = message.chat.id
    
    if not message.photo:
        bot.send_message(user_id, "❌ لطفاً یک عکس ارسال کنید!")
        return
    
    photo = message.photo[-1]
    caption = message.caption or ""
    users = db_query('SELECT user_id FROM users WHERE is_blocked = 0', fetch_all=True)
    count = 0
    
    for user in users:
        try:
            bot.send_photo(user[0], photo.file_id, caption=f"📢 **پیام همگانی**\n\n{caption}", parse_mode=None)
            count += 1
            time.sleep(0.05)
        except:
            pass
    
    bot.send_message(user_id, f"✅ پیام به {count} نفر ارسال شد!")
    admin_panel_menu(user_id)

def process_add_admin(message):
    user_id = message.chat.id
    
    try:
        new_admin = int(message.text.strip())
        
        if not is_admin(new_admin):
            db_query('INSERT INTO admins (user_id) VALUES (?)', (new_admin,), commit=True)
            bot.send_message(user_id, f"✅ ادمین {new_admin} اضافه شد!")
        else:
            bot.send_message(user_id, "❌ این کاربر قبلاً ادمین است!")
    except:
        bot.send_message(user_id, "❌ آیدی عددی معتبر وارد کنید!")

def process_remove_admin(message):
    user_id = message.chat.id
    
    try:
        admin_id = int(message.text.strip())
        
        if admin_id != ADMIN_IDS[0]:
            db_query('DELETE FROM admins WHERE user_id = ?', (admin_id,), commit=True)
            bot.send_message(user_id, f"✅ ادمین {admin_id} حذف شد!")
        else:
            bot.send_message(user_id, "❌ نمی‌توانید ادمین اصلی را حذف کنید!")
    except:
        bot.send_message(user_id, "❌ آیدی عددی معتبر وارد کنید!")

def process_view_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    
    if not link.startswith('https://t.me/') and not link.startswith('http://t.me/'):
        bot.send_message(user_id, "❌ لینک معتبر نیست! لطفاً دوباره وارد کنید:")
        bot.register_next_step_handler(message, process_view_link)
        return
    
    user_temp_data[user_id]['view_link'] = link
    user_temp_data[user_id]['step'] = 'view_count'
    
    bot.delete_message(user_id, message.message_id)
    msg = bot.send_message(user_id, "👁️ تعداد بازدید (۱۰۰۰ تا ۵۰۰,۰۰۰) را وارد کنید:")
    bot.register_next_step_handler(msg, process_view_count)

def process_view_channel(message):
    user_id = message.chat.id
    text = message.text.strip()
    
    parts = text.split('\n')
    
    if len(parts) < 2:
        bot.send_message(user_id, "❌ لطفاً لینک کانال و تعداد پست‌ها را وارد کنید:\nمثال:\nhttps://t.me/yourchannel\n5")
        bot.register_next_step_handler(message, process_view_channel)
        return
    
    channel = parts[0].strip()
    
    try:
        post_count = int(parts[1].strip())
        
        if post_count < 1 or post_count > 10:
            bot.send_message(user_id, "❌ تعداد پست‌ها باید بین ۱ تا ۱۰ باشد!")
            bot.register_next_step_handler(message, process_view_channel)
            return
    except:
        bot.send_message(user_id, "❌ تعداد پست‌ها را به درستی وارد کنید!")
        bot.register_next_step_handler(message, process_view_channel)
        return
    
    user_temp_data[user_id]['view_channel'] = channel
    user_temp_data[user_id]['view_posts'] = post_count
    user_temp_data[user_id]['step'] = 'view_count'
    
    bot.delete_message(user_id, message.message_id)
    msg = bot.send_message(user_id, f"👁️ تعداد بازدید (۱۰۰۰ تا ۵۰۰,۰۰۰) را وارد کنید:")
    bot.register_next_step_handler(msg, process_view_count)

def process_view_count(message):
    user_id = message.chat.id
    
    try:
        count = int(message.text.strip())
        
        if count < 1000 or count > 500000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۵۰۰,۰۰۰ باشد!")
            return
        
        data = user_temp_data.get(user_id, {})
        
        if not data:
            bot.send_message(user_id, "❌ خطا در اطلاعات! لطفاً دوباره شروع کنید.")
            return
        
        price = int((count / 1000) * 35000)
        
        if data.get('view_type') == 'multi':
            price *= data.get('view_posts', 1)
            title = f"بازدید {data.get('view_posts', 1)} پست اخیر"
            details = f"کانال: {data.get('view_channel', '')}\nتعداد پست‌ها: {data.get('view_posts', 1)}"
        else:
            title = "بازدید پست (تکی)"
            details = f"لینک: {data.get('view_link', '')}"
        
        tracking = generate_tracking_code()
        
        db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
                 (user_id, tracking, 'view', title, price, count, details, 'pending', datetime.now().isoformat()), commit=True)
        
        bot.delete_message(user_id, message.message_id)
        bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
        
        for admin in ADMIN_IDS:
            bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n📝 {details}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
        
        show_payment_options(user_id, tracking, title, price)
        
        del user_temp_data[user_id]
    except Exception as e:
        logging.error(f"Error in view_count: {e}")
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_ads_search_count(message):
    user_id = message.chat.id
    
    try:
        count = int(message.text.strip())
        
        if count < 1000 or count > 50000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۵۰,۰۰۰ باشد!")
            return
        
        user_temp_data[user_id]['ads_count'] = count
        user_temp_data[user_id]['step'] = 'ads_search_link'
        
        bot.delete_message(user_id, message.message_id)
        msg = bot.send_message(user_id, "🔍 لینک کانال یا ربات خود را وارد کنید:")
        bot.register_next_step_handler(msg, process_ads_search_link)
    except:
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_ads_search_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    user_temp_data[user_id]['ads_link'] = link
    user_temp_data[user_id]['step'] = 'ads_search_keywords'
    
    bot.delete_message(user_id, message.message_id)
    msg = bot.send_message(user_id, "🔍 ۱۰ کلمه کلیدی را وارد کنید (با فاصله):\nمثال: طلا جواهر انگشتر هدیه")
    bot.register_next_step_handler(msg, process_ads_search_keywords)

def process_ads_search_keywords(message):
    user_id = message.chat.id
    keywords = message.text.strip()
    keyword_list = keywords.split()
    
    if len(keyword_list) > 10:
        bot.send_message(user_id, "❌ حداکثر ۱۰ کلمه مجاز است!")
        bot.register_next_step_handler(message, process_ads_search_keywords)
        return
    
    data = user_temp_data.get(user_id, {})
    count = data.get('ads_count', 0)
    price = (count // 5000) * 550000
    if count % 5000 != 0:
        price += 550000
    
    tracking = generate_tracking_code()
    title = f"تبلیغ در سرچ - {count} بازدید"
    details = f"لینک: {data.get('ads_link', '')}\nکلمات کلیدی: {keywords}"
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'ads_search', title, price, count, details, 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n📝 {details}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

def process_ads_channel_count(message):
    user_id = message.chat.id
    
    try:
        count = int(message.text.strip())
        
        if count < 1000 or count > 50000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۵۰,۰۰۰ باشد!")
            return
        
        user_temp_data[user_id]['ads_count'] = count
        user_temp_data[user_id]['step'] = 'ads_channel_link'
        
        bot.delete_message(user_id, message.message_id)
        msg = bot.send_message(user_id, "📢 لینک کانال یا ربات خود را وارد کنید:")
        bot.register_next_step_handler(msg, process_ads_channel_link)
    except:
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_ads_channel_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    user_temp_data[user_id]['ads_link'] = link
    user_temp_data[user_id]['step'] = 'ads_channel_targets'
    
    bot.delete_message(user_id, message.message_id)
    msg = bot.send_message(user_id, "📢 ۱۰ لینک کانال هدف را وارد کنید (هر خط یک لینک):\n(حداقل ۱ کانال)")
    bot.register_next_step_handler(msg, process_ads_channel_targets)

def process_ads_channel_targets(message):
    user_id = message.chat.id
    targets = message.text.split('\n')
    targets = [t.strip() for t in targets if t.strip()]
    
    if len(targets) < 1 or len(targets) > 10:
        bot.send_message(user_id, f"❌ تعداد کانال‌ها باید بین ۱ تا ۱۰ باشد! (شما {len(targets)} وارد کردید)")
        bot.register_next_step_handler(message, process_ads_channel_targets)
        return
    
    data = user_temp_data.get(user_id, {})
    count = data.get('ads_count', 0)
    price = (count // 10000) * 750000
    if count % 10000 != 0:
        price += 750000
    
    tracking = generate_tracking_code()
    title = f"تبلیغ در کانال‌های هدف - {count} بازدید"
    details = f"لینک شما: {data.get('ads_link', '')}\nکانال‌های هدف: {', '.join(targets)}"
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'ads_channel', title, price, count, details, 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n📝 {details}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

def process_ads_robot_count(message):
    user_id = message.chat.id
    
    try:
        count = int(message.text.strip())
        
        if count < 1000 or count > 50000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۵۰,۰۰۰ باشد!")
            return
        
        user_temp_data[user_id]['ads_count'] = count
        user_temp_data[user_id]['step'] = 'ads_robot_link'
        
        bot.delete_message(user_id, message.message_id)
        msg = bot.send_message(user_id, "🤖 لینک کانال یا ربات خود را وارد کنید:")
        bot.register_next_step_handler(msg, process_ads_robot_link)
    except:
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_ads_robot_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    user_temp_data[user_id]['ads_link'] = link
    user_temp_data[user_id]['step'] = 'ads_robot_targets'
    
    bot.delete_message(user_id, message.message_id)
    msg = bot.send_message(user_id, "🤖 ۱۰ لینک ربات هدف را وارد کنید (هر خط یک لینک):\n(حداقل ۱ ربات)")
    bot.register_next_step_handler(msg, process_ads_robot_targets)

def process_ads_robot_targets(message):
    user_id = message.chat.id
    targets = message.text.split('\n')
    targets = [t.strip() for t in targets if t.strip()]
    
    if len(targets) < 1 or len(targets) > 10:
        bot.send_message(user_id, f"❌ تعداد ربات‌ها باید بین ۱ تا ۱۰ باشد! (شما {len(targets)} وارد کردید)")
        bot.register_next_step_handler(message, process_ads_robot_targets)
        return
    
    data = user_temp_data.get(user_id, {})
    count = data.get('ads_count', 0)
    price = (count // 10000) * 750000
    if count % 10000 != 0:
        price += 750000
    
    tracking = generate_tracking_code()
    title = f"تبلیغ در ربات‌های هدف - {count} بازدید"
    details = f"لینک شما: {data.get('ads_link', '')}\nربات‌های هدف: {', '.join(targets)}"
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'ads_robot', title, price, count, details, 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n📝 {details}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

def process_ads_adult_count(message):
    user_id = message.chat.id
    
    try:
        count = int(message.text.strip())
        
        if count < 1000 or count > 50000:
            bot.send_message(user_id, "❌ تعداد باید بین ۱۰۰۰ تا ۵۰,۰۰۰ باشد!")
            return
        
        data = user_temp_data.get(user_id, {})
        ads_type = data.get('ads_type', 'adult_search')
        
        # محاسبه قیمت بر اساس نوع
        if ads_type == 'adult_search':
            price = (count // 5000) * 550000
            if count % 5000 != 0:
                price += 550000
            title = f"ادز بزرگسالان - تبلیغ در سرچ - {count} بازدید"
        else:
            price = (count // 10000) * 750000
            if count % 10000 != 0:
                price += 750000
            title = f"ادز بزرگسالان - تبلیغ در {'کانال‌های هدف' if ads_type == 'adult_channel' else 'ربات‌های هدف'} - {count} بازدید"
        
        # اضافه کردن هزینه استارت‌کار
        startup_fee = 5500000
        total_price = price + startup_fee
        
        user_temp_data[user_id]['ads_count'] = count
        user_temp_data[user_id]['ads_price'] = total_price
        user_temp_data[user_id]['ads_title'] = title
        user_temp_data[user_id]['step'] = 'ads_adult_link'
        
        bot.delete_message(user_id, message.message_id)
        msg = bot.send_message(user_id, f"✅ تعداد: {count:,} بازدید\n💰 مبلغ: {format_price(total_price)} تومان\n(شامل هزینه استارت‌کار {format_price(startup_fee)} تومان)\n\n🔗 لطفاً لینک کانال خود را وارد کنید:\n📝 مثال: @yourchannel")
        bot.register_next_step_handler(msg, process_ads_adult_link)
    except:
        bot.send_message(user_id, "❌ لطفاً فقط عدد وارد کنید!")

def process_ads_adult_link(message):
    user_id = message.chat.id
    link = message.text.strip()
    username = extract_username(link)
    
    if not username:
        bot.send_message(user_id, "❌ لینک معتبر نیست! لطفاً دوباره وارد کنید:")
        bot.register_next_step_handler(message, process_ads_adult_link)
        return
    
    data = user_temp_data.get(user_id, {})
    data['ads_link'] = username
    user_temp_data[user_id] = data
    
    tracking = generate_tracking_code()
    title = data.get('ads_title', 'ادز بزرگسالان')
    price = data.get('ads_price', 0)
    count = data.get('ads_count', 0)
    details = f"لینک: {username}"
    
    db_query('INSERT INTO orders (user_id, tracking_code, service_type, title, price, quantity, details, status, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
             (user_id, tracking, 'ads_adult', title, price, count, details, 'pending', datetime.now().isoformat()), commit=True)
    
    bot.delete_message(user_id, message.message_id)
    bot.send_message(user_id, f"✅ سفارش شما ثبت شد!\n🔑 کد پیگیری: {tracking}")
    
    for admin in ADMIN_IDS:
        keyboard = types.InlineKeyboardMarkup(row_width=2)
        keyboard.add(
            types.InlineKeyboardButton("✅ تایید", callback_data=f'admin_approve_{tracking}', style='success'),
            types.InlineKeyboardButton("❌ رد", callback_data=f'admin_reject_{tracking}', style='danger')
        )
        bot.send_message(admin, f"📩 **سفارش جدید (مرحله ۱: ثبت سفارش)**\n\n👤 {user_id}\n📋 {title}\n💰 {format_price(price)} تومان\n🔑 {tracking}\n🔗 {username}\n⏳ کاربر در حال تکمیل مراحل پرداخت است.", parse_mode=None)
    
    show_payment_options(user_id, tracking, title, price)
    del user_temp_data[user_id]

@bot.message_handler(content_types=['photo'])
def handle_screenshot(message):
    user_id = message.chat.id
    tracking_code = user_temp_data.get(user_id, {}).get('tracking_code')
    
    if not tracking_code:
        bot.send_message(user_id, "❌ لطفاً ابتدا یک سفارش ثبت کنید!")
        return
    
    photo = message.photo[-1]
    db_query('UPDATE orders SET screenshot_file_id = ?, status = "waiting_approval", updated_at = ? WHERE tracking_code = ?', 
             (photo.file_id, datetime.now().isoformat(), tracking_code), commit=True)
    
    new_tracking = generate_tracking_code()
    db_query('UPDATE orders SET tracking_code = ? WHERE tracking_code = ?', (new_tracking, tracking_code), commit=True)
    
    for admin in ADMIN_IDS:
        keyboard = types.InlineKeyboardMarkup(row_width=2)
        keyboard.add(
            types.InlineKeyboardButton("✅ تایید", callback_data=f'admin_approve_{new_tracking}', style='success'),
            types.InlineKeyboardButton("❌ رد", callback_data=f'admin_reject_{new_tracking}', style='danger')
        )
        order = db_query('SELECT user_id, title, price FROM orders WHERE tracking_code = ?', (new_tracking,), fetch_one=True)
        if order:
            bot.send_photo(admin, photo.file_id, caption=f"📩 **سفارش جدید نیاز به تایید دارد!**\n\n👤 کاربر: {user_id}\n📋 سفارش: {order[1]}\n💰 مبلغ: {format_price(order[2])} تومان\n🔑 کد پیگیری: {new_tracking}", parse_mode=None, reply_markup=keyboard)
    
    bot.delete_message(user_id, message.message_id)
    send_menu(user_id, f"✅ اسکرین‌شات شما دریافت شد!\n\n🔑 **کد پیگیری:** {new_tracking}\n\n🔄 در حال بررسی توسط ادمین...\nبه زودی نتیجه به شما اعلام می‌شود.", types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("🔙 بازگشت", callback_data='back_main', style='danger')))
    del user_temp_data[user_id]

@bot.message_handler(func=lambda message: True)
def handle_messages(message):
    user_id = message.chat.id
    step = user_temp_data.get(user_id, {}).get('step')
    text = message.text
    
    if text == "🔙 بازگشت به منو اصلی":
        main_menu(message)
        return
    
    if step == 'member_count':
        process_member_count(message)
    elif step == 'member_link':
        process_member_link(message)
    elif step == 'tick_id':
        process_tick_id(message)
    elif step == 'admin_reject_reason':
        process_admin_reject_reason(message)
    elif step == 'admin_search_order':
        process_admin_search_order(message)
    elif step == 'admin_search_user':
        process_admin_search_user(message)
    elif step == 'admin_send_message':
        process_admin_send_message(message)
    elif step == 'admin_ticket_reply':
        process_admin_ticket_reply(message)
    elif step == 'admin_send_to_user':
        process_admin_send_to_user(message)
    elif step == 'admin_block_user':
        process_admin_block_user(message)
    elif step == 'admin_unblock_user':
        process_admin_unblock_user(message)
    elif step == 'broadcast_text':
        process_broadcast_text(message)
    elif step == 'add_admin':
        process_add_admin(message)
    elif step == 'remove_admin':
        process_remove_admin(message)
    elif step == 'view_link':
        process_view_link(message)
    elif step == 'view_channel':
        process_view_channel(message)
    elif step == 'view_count':
        process_view_count(message)
    elif step == 'ads_search_count':
        process_ads_search_count(message)
    elif step == 'ads_search_link':
        process_ads_search_link(message)
    elif step == 'ads_search_keywords':
        process_ads_search_keywords(message)
    elif step == 'ads_channel_count':
        process_ads_channel_count(message)
    elif step == 'ads_channel_link':
        process_ads_channel_link(message)
    elif step == 'ads_channel_targets':
        process_ads_channel_targets(message)
    elif step == 'ads_robot_count':
        process_ads_robot_count(message)
    elif step == 'ads_robot_link':
        process_ads_robot_link(message)
    elif step == 'ads_robot_targets':
        process_ads_robot_targets(message)
    elif step == 'ads_adult_link':
        process_ads_adult_link(message)
    else:
        bot.send_message(user_id, "❌ لطفاً از دکمه‌ها استفاده کنید.")

if __name__ == '__main__':
    print("🤖 ربات رم‌کدر در حال اجراست...")
    while True:
        try:
            bot.polling(none_stop=True, interval=0, timeout=20)
        except Exception as e:
            print(f"❌ خطا: {e}")
            time.sleep(5)