from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
import random, string, time, threading
from datetime import datetime

TOKEN = "8969949996:AAF0JzupP1RBND-bKJGQ9J9J-KjfoNkvM_Q"
ADMIN_IDS = [6485114347, 1653753132, 8993331140]
CHANNEL_ID = "@telorabox"

PRICES = {'star': 3700, 'reaction': 3850, 'config': 9600, 'premium_3m': 2800000, 'premium_6m': 3950000, 'premium_12m': 6800000}

def is_admin(u): return u in ADMIN_IDS
def fmt(a): return f"{a:,}".replace(',', ',')
def gen_track(): return ''.join(random.choices(string.ascii_uppercase + string.digits, k=8))
def gen_user(): return "***" + ''.join(random.choices(string.digits, k=4))

def send_fake(bot):
    item = random.choice(["⭐ استارز", "🎁 گیفت", "🌐 کانفیگ", "👑 پرمیوم"])
    amount = random.randint(10000, 500000)
    now = datetime.now()
    bot.send_message(CHANNEL_ID,
        f"✅ **سفارش موفق**\n\n👤 کاربر: {gen_user()}\n📦 محصول: {item}\n💰 مبلغ: {fmt(amount)} تومان\n📅 تاریخ: {now.strftime('%Y/%m/%d')}\n⏰ ساعت: {now.strftime('%H:%M:%S')}\n🆔 کد پیگیری: {gen_track()}",
        parse_mode='Markdown')

def fake_loop(bot):
    while True:
        time.sleep(3600)
        if random.random() < 0.6:
            send_fake(bot)

def start(update, context):
    update.message.reply_text("✅ ربات روشن شد!")

def admin_panel(update, context):
    if not is_admin(update.effective_user.id):
        update.message.reply_text("❌ شما ادمین نیستید.")
        return
    update.message.reply_text("👑 پنل ادمین", reply_markup=InlineKeyboardMarkup([
        [InlineKeyboardButton("📤 ارسال رسید فیک", callback_data="send_fake_now")],
        [InlineKeyboardButton("⭐ قیمت استارز", callback_data="edit_star")],
        [InlineKeyboardButton("🌐 قیمت کانفیگ", callback_data="edit_config")]
    ]))

def button(update, context):
    q = update.callback_query
    q.answer()
    data = q.data
    uid = update.effective_user.id
    if not is_admin(uid): return
    if data == "send_fake_now":
        send_fake(context.bot)
        q.edit_message_text("✅ رسید فیک ارسال شد!", reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("🔙 بازگشت", callback_data="back_admin")]]))
    elif data == "back_admin":
        admin_panel(update, context)
    elif data == "edit_star":
        q.edit_message_text("💰 قیمت فعلی استارز: {} تومان\nبرای تغییر عدد جدید را وارد کنید.".format(fmt(PRICES['star'])))
        context.user_data['edit_key'] = 'star'
    elif data == "edit_config":
        q.edit_message_text("💰 قیمت فعلی کانفیگ (هر گیگ): {} تومان\nبرای تغییر عدد جدید را وارد کنید.".format(fmt(PRICES['config'])))
        context.user_data['edit_key'] = 'config'

def handle_msg(update, context):
    key = context.user_data.get('edit_key')
    if not key: return
    try:
        val = int(update.message.text)
        if val < 0: raise ValueError
        PRICES[key] = val
        update.message.reply_text(f"✅ قیمت {key} به {fmt(val)} تومان تغییر یافت.")
        context.user_data['edit_key'] = None
    except:
        update.message.reply_text("❌ عدد معتبر وارد کنید.")

def main():
    updater = Updater(TOKEN, use_context=True)
    dp = updater.dispatcher
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("admin", admin_panel))
    dp.add_handler(CallbackQueryHandler(button))
    dp.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_msg))
    threading.Thread(target=fake_loop, args=(updater.bot,), daemon=True).start()
    updater.start_polling()
    print("✅ ربات روشن شد!")
    updater.idle()

if __name__ == "__main__":
    main()
