<?php
// === تنظیمات اصلی ربات و دیتابیس ===
$botToken = "8712009551:AAFuOaGGJLEIoYu8QphRLc4Myi1jn9y2dYQ"; // توکن ربات شما
$adminId = "8303201112"; // آیدی عددی ادمین کل ربات
$requiredChannel = "@arshiyagift"; // کانال جوین اجباری

$db_host = "localhost";
$db_user = "arshiyan_j";
$db_pass = "ArshiyamA12@";
$db_name = "arshiyan_j";

$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) { die("اتصال برقرار نشد: " . $conn->connect_error); }
$conn->set_charset("utf8mb4");

// دریافت آپدیت‌ها از تلگرام
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if (!$update) exit;

// آرایه ایموجی‌های پرمیوم اختصاصی شما
$pe = [
    1 => '5834643712189141114', // ایموجی ۱
    2 => '5974088402503471809', // ایموجی ۲
    3 => '5791797131329147563', // ایموجی ۳
    4 => '5278606955307369986', // ایموجی ۴
    5 => '5197434882321567830', // ایموجی ۵
    6 => '5278467510604160626', // ایموجی ۶
    7 => '5433986077369074055', // ایموجی ۷
    8 => '5830203935775789535', // ایموجی ۸
    9 => '5834933356193649751', // ایموجی ۹
    10 => '5830256132513338127' // ایموجی ۱۰
];

// === توابع کمکی ربات ===
function sendTelegram($method, $data) {
    global $botToken;
    $url = "https://api.telegram.org/bot" . $botToken . "/" . $method;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return json_decode($result, true);
}

function checkJoin($userId) {
    global $requiredChannel;
    $res = sendTelegram("getChatMember", [
        'chat_id' => $requiredChannel,
        'user_id' => $userId
    ]);
    if (isset($res['ok']) && $res['ok'] === true) {
        $status = $res['result']['status'];
        if (in_array($status, ['creator', 'administrator', 'member'])) {
            return true;
        }
    }
    return false;
}

function sendJoinRequired($chatId) {
    global $requiredChannel, $pe;
    $keyboard = [
        'inline_keyboard' => [
            [['text' => "عضویت در کانال", 'url' => "https://t.me/" . ltrim($requiredChannel, '@'), 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "بررسی عضویت", 'callback_data' => "check_join", 'icon_custom_emoji_id' => $pe[2], 'style' => 'primary']]
        ]
    ];
    sendTelegram("sendMessage", [
        'chat_id' => $chatId,
        'text' => "❌ برای استفاده از ربات باید ابتدا در کانال زیر عضو شوید:\n{$requiredChannel}\n\nپس از عضویت، روی دکمه «بررسی عضویت» کلیک کنید:",
        'parse_mode' => 'HTML',
        'reply_markup' => json_encode($keyboard)
    ]);
}

function getUserStep($userId) {
    global $conn;
    $stmt = $conn->prepare("SELECT step FROM users WHERE user_id = ?");
    $stmt->bind_param("s", $userId);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result === false) {
        return 'none';
    }
    $res = $result->fetch_assoc();
    return $res ? $res['step'] : 'none';
}

function setUserStep($userId, $step) {
    global $conn;
    $stmt = $conn->prepare("UPDATE users SET step = ? WHERE user_id = ?");
    $stmt->bind_param("ss", $step, $userId);
    $stmt->execute();
}

function finishLottery($lotteryId) {
    global $conn, $pe;
    
    $stmt = $conn->prepare("SELECT channel_id, text, winners_count, message_id FROM lotteries WHERE id = ? AND status = 'active'");
    $stmt->bind_param("i", $lotteryId);
    $stmt->execute();
    $lotteryResult = $stmt->get_result();
    if ($lotteryResult === false) return;
    $lottery = $lotteryResult->fetch_assoc();
    if (!$lottery) return;
    
    $stmt = $conn->prepare("SELECT user_id, username, tickets FROM participants WHERE lottery_id = ?");
    $stmt->bind_param("i", $lotteryId);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result === false) return;
    
    $ticketPool = [];
    $userMap = [];
    while($row = $result->fetch_assoc()) {
        $userMap[$row['user_id']] = $row['username'];
        for ($i = 0; $i < $row['tickets']; $i++) {
            $ticketPool[] = $row['user_id'];
        }
    }
    
    if (empty($ticketPool)) {
        $winnerText = "❌ <b>قرعه‌کشی این کانال به پایان رسید اما هیچ شرکت‌کننده‌ای نداشت!</b>";
    } else {
        $winners = [];
        $winnersCount = min($lottery['winners_count'], count($userMap));
        
        while (count($winners) < $winnersCount && !empty($ticketPool)) {
            $randKey = array_rand($ticketPool);
            $selectedUser = $ticketPool[$randKey];
            if (!in_array($selectedUser, $winners)) {
                $winners[] = $selectedUser;
            }
            $ticketPool = array_values(array_filter($ticketPool, function($v) use ($selectedUser) { return $v !== $selectedUser; }));
        }
        
        $winnerText = "<tg-emoji emoji-id='{$pe[1]}'>🎁</tg-emoji> ════════════════ <tg-emoji emoji-id='{$pe[1]}'>🎁</tg-emoji>\n";
        $winnerText .= "<b>نتیجه قرعه‌کشی نهایی اعلام شد!</b>\n\n";
        $winnerText .= "🏆 <b>برندگان خوش‌شانس این چالش:</b>\n";
        foreach ($winners as $index => $wId) {
            $uName = $userMap[$wId];
            $namePart = $uName ? "یوزرنیم: @".$uName." | " : "";
            $idPart = "<a href='tg://user?id=".$wId."'>لینک پروفایل</a>";
            $rankEmoji = isset($pe[$index + 1]) ? "<tg-emoji emoji-id='{$pe[$index + 1]}'>⭐</tg-emoji>" : "🥇";
            
            $winnerText .= "$rankEmoji " . ($index + 1) . "- " . $namePart . "آیدی: " . $idPart . "\n";
        }
        $winnerText .= "\n🎉 ════════════════ 🎉";
    }
    
    sendTelegram("sendMessage", [
        'chat_id' => $lottery['channel_id'],
        'text' => $winnerText,
        'parse_mode' => 'HTML'
    ]);
    
    $stmt = $conn->prepare("UPDATE lotteries SET status = 'finished' WHERE id = ?");
    $stmt->bind_param("i", $lotteryId);
    $stmt->execute();
}

// === ۱. پردازش کالبک‌ها و دکمه‌های شیشه‌ای ترکیبی (رنگی + پرمیوم) ===
if (isset($update['callback_query'])) {
    $callback = $update['callback_query'];
    $userId = $callback['from']['id'];
    $chatId = $callback['message']['chat']['id'];
    $messageId = $callback['message']['message_id'];
    $cbData = $callback['data'];
    
    $stmt = $conn->prepare("SELECT status FROM users WHERE user_id = ?");
    $stmt->bind_param("s", $userId);
    $stmt->execute();
    $userCheckResult = $stmt->get_result();
    if ($userCheckResult !== false) {
        $userCheck = $userCheckResult->fetch_assoc();
        if ($userCheck && $userCheck['status'] == 'blocked') { exit; }
    }

    if ($cbData == "check_join") {
        if (checkJoin($userId)) {
            sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "✅ عضویت شما تایید شد. لطفاً مجدداً دستور خود را ارسال کنید یا /start را بزنید."]);
        } else {
            sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id'], 'text' => "❌ شما هنوز در کانال عضو نشده‌اید!", 'show_alert' => true]);
        }
        exit;
    }

    if (!checkJoin($userId)) {
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id'], 'text' => "❌ ابتدا باید در کانال عضو شوید!", 'show_alert' => true]);
        sendJoinRequired($chatId);
        exit;
    }

    if ($cbData == "menu_create") {
        setUserStep($userId, "get_channel");
        sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
        sendTelegram("sendMessage", [
            'chat_id' => $chatId, 
            'text' => "<tg-emoji emoji-id='{$pe[1]}'>⭐</tg-emoji> <b>گام ۱:</b> لطفاً آیدی عمومی کانال خود را به همراه @ وارد کنید (مثال: @my_channel):\n\n⚠️ <i>نکته مهم: ابتدا باید ربات را در کانال خود ادمین با دسترسی ارسال پیام کنید.</i>", 
            'parse_mode' => 'HTML'
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "menu_my_challenges") {
        $stmt = $conn->prepare("SELECT id, channel_id, status FROM lotteries WHERE creator_id = ? ORDER BY id DESC");
        $stmt->bind_param("s", $userId);
        $stmt->execute();
        $res = $stmt->get_result();
        
        if ($res === false || $res->num_rows == 0) {
            $report = "📭 شما هنوز هیچ چالشی نساخته‌اید.";
            $buttons = [[['text' => "بازگشت", 'callback_data' => "menu_back", 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]];
        } else {
            $report = "<tg-emoji emoji-id='{$pe[2]}'>⭐</tg-emoji> <b>لیست چالش‌های ثبت شده توسط شما:</b>\n\nجهت مدیریت و مشاهده جزئیات روی چالش مورد نظر کلیک کنید:";
            $buttons = [];
            while ($row = $res->fetch_assoc()) {
                $statusText = ($row['status'] == 'active') ? "🟢 فعال" : "🔴 پایان یافته";
                $styleType = ($row['status'] == 'active') ? 'success' : 'danger';
                $emojiType = ($row['status'] == 'active') ? $pe[1] : $pe[6];
                
                $buttons[] = [['text' => "چالش {$row['id']} | کانال: {$row['channel_id']} ($statusText)", 'callback_data' => "manage_id_" . $row['id'], 'icon_custom_emoji_id' => $emojiType, 'style' => $styleType]];
            }
            $buttons[] = [['text' => "بازگشت به منوی اصلی", 'callback_data' => "menu_back", 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']];
        }
        
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => $report,
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode(['inline_keyboard' => $buttons])
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if (strpos($cbData, "manage_id_") === 0) {
        $lotteryId = (int)str_replace("manage_id_", "", $cbData);
        
        $stmt = $conn->prepare("SELECT * FROM lotteries WHERE id = ? AND creator_id = ?");
        $stmt->bind_param("is", $lotteryId, $userId);
        $stmt->execute();
        $lotResult = $stmt->get_result();
        $lot = $lotResult ? $lotResult->fetch_assoc() : null;
        
        if (!$lot) {
            sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id'], 'text' => "❌ چالش یافت نشد!"]);
            exit;
        }
        
        $statusText = ($lot['status'] == 'active') ? "🟢 فعال و در حال برگزاری" : "🔴 پایان یافته";
        $condType = ($lot['end_type'] == 'count') ? "تعداد شرکت‌کننده" : "زمان‌بندی";
        $condVal = ($lot['end_type'] == 'time') ? date("Y-m-d H:i:s", $lot['end_value']) . " (به وقت سرور)" : $lot['end_value'] . " نفر";
        
        $textMenu = "<tg-emoji emoji-id='{$pe[3]}'>⭐</tg-emoji> <b>مدیریت چالش کد: $lotteryId</b>\n\n📢 کانال هدف: {$lot['channel_id']}\nوضعیت فعلی: $statusText\nنوع شرط پایان: $condType\nمقدار شرط: $condVal\nتعداد کل برندگان تعیین شده: {$lot['winners_count']} نفر";
        
        $buttons = [
            [['text' => "مشاهده ۱۰ نفر برتر رفرال", 'callback_data' => "top10_" . $lotteryId, 'icon_custom_emoji_id' => $pe[2], 'style' => 'primary']],
            [['text' => "ویرایش شرط پایان چالش", 'callback_data' => "edit_condition_" . $lotteryId, 'icon_custom_emoji_id' => $pe[5], 'style' => 'danger']],
            [['text' => "بازگشت به لیست", 'callback_data' => "menu_my_challenges", 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]
        ];
        
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => $textMenu,
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode(['inline_keyboard' => $buttons])
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if (strpos($cbData, "top10_") === 0) {
        $lotteryId = (int)str_replace("top10_", "", $cbData);
        
        $stmt = $conn->prepare("SELECT user_id, username, tickets FROM participants WHERE lottery_id = ? ORDER BY (tickets - 1) DESC LIMIT 10");
        $stmt->bind_param("i", $lotteryId);
        $stmt->execute();
        $res = $stmt->get_result();
        
        $report = "<tg-emoji emoji-id='{$pe[4]}'>⭐</tg-emoji> <b>لیست ۱۰ نفر برتر رفرال در چالش $lotteryId :</b>\n\n";
        if ($res === false || $res->num_rows == 0) {
            $report .= " هنوز هیچ کاربری در این چالش زیرمجموعه نیاورده است.\n";
        } else {
            $rank = 1;
            while ($p = $res->fetch_assoc()) {
                $name = $p['username'] ? "@".$p['username'] : "کاربر [".$p['user_id']."]";
                $referralsCount = $p['tickets'] - 1;
                $rankEmoji = isset($pe[$rank]) ? "<tg-emoji emoji-id='{$pe[$rank]}'>⭐</tg-emoji>" : "🔹";
                
                $report .= "$rankEmoji <b>رتبه $rank:</b> $name\n    ➡️ تعداد دعوت: <b>$referralsCount نفر</b> | کل تیکت‌ها: {$p['tickets']}\n";
                $rank++;
            }
        }
        
        $buttons = [[['text' => "بازگشت به مدیریت چالش", 'callback_data' => "manage_id_" . $lotteryId, 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]];
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => $report,
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode(['inline_keyboard' => $buttons])
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if (strpos($cbData, "edit_condition_") === 0) {
        $lotteryId = (int)str_replace("edit_condition_", "", $cbData);
        
        $buttons = [
            [['text' => "تغییر به تعداد نفرات", 'callback_data' => "chn_type_count_" . $lotteryId, 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "تغییر به زمان‌بندی (دقیقه)", 'callback_data' => "chn_type_time_" . $lotteryId, 'icon_custom_emoji_id' => $pe[6], 'style' => 'danger']],
            [['text' => "لغو و بازگشت", 'callback_data' => "manage_id_" . $lotteryId, 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]
        ];
        
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => "<tg-emoji emoji-id='{$pe[5]}'>⭐</tg-emoji> <b>نوع شرط پایان جدید را انتخاب کنید:</b>",
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode(['inline_keyboard' => $buttons])
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if (strpos($cbData, "chn_type_") === 0) {
        $ex = explode("_", $cbData);
        $newType = $ex[2];
        $lotteryId = (int)$ex[3];
        
        $stmt = $conn->prepare("UPDATE lotteries SET end_type = ? WHERE id = ? AND creator_id = ?");
        $stmt->bind_param("sis", $newType, $lotteryId, $userId);
        $stmt->execute();
        
        $sessionStep = "editval_" . $newType . "_" . $lotteryId;
        setUserStep($userId, $sessionStep);
        
        sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
        $msg = ($newType == 'count') ? "👥 لطفاً سقف جدید تعداد شرکت‌کنندگان (مثلاً 250) را به صورت عدد لاتین بفرستید:" : "⏱ لطفاً مدت زمان جدید چالش را به <b>دقیقه</b> (مثلاً 60) ارسال کنید:";
        
        sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => $msg, 'parse_mode' => 'HTML']);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "menu_admin" && $userId == $adminId) {
        $adminMenu = ['inline_keyboard' => [
            [['text' => "آمار کل ربات", 'callback_data' => "admin_stats", 'icon_custom_emoji_id' => $pe[4], 'style' => 'primary'], ['text' => "پیام همگانی", 'callback_data' => "admin_broadcast", 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "بلاک کاربر", 'callback_data' => "admin_block", 'icon_custom_emoji_id' => $pe[6], 'style' => 'danger'], ['text' => "آنبلاک کاربر", 'callback_data' => "admin_unblock", 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "بازگشت به منوی اصلی", 'callback_data' => "menu_back", 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]
        ]];
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => "<tg-emoji emoji-id='{$pe[6]}'>⭐</tg-emoji> <b>به پنل مدیریت کل سیستم خوش آمدید:</b>",
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode($adminMenu)
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "menu_back") {
        setUserStep($userId, "none");
        $mainMenu = ['inline_keyboard' => [
            [['text' => "ساخت چالش جدید", 'callback_data' => "menu_create", 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "چالش‌های من", 'callback_data' => "menu_my_challenges", 'icon_custom_emoji_id' => $pe[2], 'style' => 'primary']]
        ]];
        if ($userId == $adminId) {
            $mainMenu['inline_keyboard'][] = [['text' => "پنل مدیریت", 'callback_data' => "menu_admin", 'icon_custom_emoji_id' => $pe[6], 'style' => 'danger']];
        }
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => "<tg-emoji emoji-id='{$pe[7]}'>⭐</tg-emoji> <b>به منوی اصلی خوش آمدید. گزینه مورد نظر خود را انتخاب کنید:</b>",
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode($mainMenu)
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "admin_stats" && $userId == $adminId) {
        $uQuery = $conn->query("SELECT COUNT(*) as c FROM users");
        $totalUsers = $uQuery ? $uQuery->fetch_assoc()['c'] : 0;
        $aQuery = $conn->query("SELECT COUNT(*) as c FROM lotteries WHERE status = 'active'");
        $activeLots = $aQuery ? $aQuery->fetch_assoc()['c'] : 0;
        $fQuery = $conn->query("SELECT COUNT(*) as c FROM lotteries WHERE status = 'finished'");
        $doneLots = $fQuery ? $fQuery->fetch_assoc()['c'] : 0;
        
        $stats = "<tg-emoji emoji-id='{$pe[8]}'>⭐</tg-emoji> <b>آمار کل پلتفرم:</b>\n\n👥 تعداد کل کاربران: $totalUsers\n🔄 چالش‌های فعال فعلی: $activeLots\n✅ چالش‌های پایان یافته: $doneLots";
        $backKey = ['inline_keyboard' => [[['text' => "بازگشت به پنل ادمین", 'callback_data' => "menu_admin", 'icon_custom_emoji_id' => $pe[3], 'style' => 'primary']]]];
        sendTelegram("editMessageText", [
            'chat_id' => $chatId,
            'message_id' => $messageId,
            'text' => $stats,
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode($backKey)
        ]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "admin_broadcast" && $userId == $adminId) {
        setUserStep($userId, "admin_broadcast");
        sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
        sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "📨 لطفاً متن یا پیام خود را جهت ارسال به همه کاربران بفرستید:"]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "admin_block" && $userId == $adminId) {
        setUserStep($userId, "admin_block");
        sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
        sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "🆔 آیدی عددی کاربر مورد نظر جهت مسدودسازی را بفرستید:"]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }

    if ($cbData == "admin_unblock" && $userId == $adminId) {
        setUserStep($userId, "admin_unblock");
        sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
        sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "🆔 آیدی عددی کاربر مورد نظر جهت رفع مسدودسازی را بفرستید:"]);
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }
    
    if (strpos($cbData, "settype_") === 0) {
        $type = str_replace("settype_", "", $cbData);
        $stmt = $conn->prepare("SELECT id FROM lotteries WHERE creator_id = ? ORDER BY id DESC LIMIT 1");
        $stmt->bind_param("s", $userId);
        $stmt->execute();
        $lastLotResult = $stmt->get_result();
        $lastLot = $lastLotResult ? $lastLotResult->fetch_assoc() : null;
        
        if ($lastLot) {
            $stmt = $conn->prepare("UPDATE lotteries SET end_type = ? WHERE id = ?");
            $stmt->bind_param("si", $type, $lastLot['id']);
            $stmt->execute();
            
            setUserStep($userId, "get_end_value");
            sendTelegram("deleteMessage", ['chat_id' => $chatId, 'message_id' => $messageId]);
            $msg = ($type == 'count') ? "👥 لطفاً سقف تعداد شرکت‌کنندگان (مثلاً 500) را وارد کنید:" : "⏱ لطفاً مدت زمان چالش را به <b>دقیقه</b> (مثلاً 1440 برای یک روز) وارد کنید:";
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => $msg, 'parse_mode' => 'HTML']);
        }
        sendTelegram("answerCallbackQuery", ['callback_query_id' => $callback['id']]);
        exit;
    }
}

// === ۲. پردازش پیام‌های متنی و پیاده‌سازی گام به گام ===
if (isset($update['message'])) {
    $message = $update['message'];
    $userId = $message['from']['id'];
    $chatId = $message['chat']['id'];
    $username = isset($message['from']['username']) ? $message['from']['username'] : null;
    $text = isset($message['text']) ? trim($message['text']) : '';

    $stmt = $conn->prepare("INSERT INTO users (user_id, username) VALUES (?, ?) ON DUPLICATE KEY UPDATE username = ?");
    $stmt->bind_param("sss", $userId, $username, $username);
    $stmt->execute();
    
    $stmt = $conn->prepare("SELECT status FROM users WHERE user_id = ?");
    $stmt->bind_param("s", $userId);
    $stmt->execute();
    $uStatusResult = $stmt->get_result();
    if ($uStatusResult !== false) {
        $uStatus = $uStatusResult->fetch_assoc();
        if ($uStatus && $uStatus['status'] == 'blocked') {
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => '❌ شما از دسترسی به ربات محروم شده‌اید.']);
            exit;
        }
    }

    if (!checkJoin($userId) && strpos($text, "/start") !== 0) {
        sendJoinRequired($chatId);
        exit;
    }

    $currentStep = getUserStep($userId);

    if (strpos($text, "/start") === 0) {
        if (!checkJoin($userId)) {
            sendJoinRequired($chatId);
            exit;
        }

        setUserStep($userId, "none");
        $param = str_replace("/start ", "", $text);
        
        if (strpos($param, "join_") === 0) {
            $lotteryId = (int)str_replace("join_", "", $param);
            
            $stmt = $conn->prepare("SELECT status, channel_id, message_id, end_type, end_value FROM lotteries WHERE id = ?");
            $stmt->bind_param("i", $lotteryId);
            $stmt->execute();
            $lotDataResult = $stmt->get_result();
            $lotData = $lotDataResult ? $lotDataResult->fetch_assoc() : null;
            
            if (!$lotData || $lotData['status'] != 'active') {
                sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "❌ این چالش به پایان رسیده است!"]);
                exit;
            }

            $stmt = $conn->prepare("SELECT id FROM participants WHERE lottery_id = ? AND user_id = ?");
            $stmt->bind_param("is", $lotteryId, $userId);
            $stmt->execute();
            $pCheck = $stmt->get_result();
            
            $botUser = sendTelegram("getMe", []);
            $refLink = "https://t.me/" . $botUser['result']['username'] . "?start=ref_" . $lotteryId . "_" . $userId;

            if ($pCheck && $pCheck->num_rows > 0) {
                sendTelegram("sendMessage", [
                    'chat_id' => $chatId,
                    'text' => "<tg-emoji emoji-id='{$pe[1]}'>🎉</tg-emoji> <b>شما قبلاً در این چالش ثبت‌نام کرده‌اید!</b>\n\n🔗 <b>لینک اختصاصی زیرمجموعه‌گیری شما:</b>\n" . $refLink,
                    'parse_mode' => 'HTML'
                ]);
            } else {
                $stmt = $conn->prepare("INSERT INTO participants (lottery_id, user_id, username, tickets) VALUES (?, ?, ?, 1)");
                $stmt->bind_param("iss", $lotteryId, $userId, $message['from']['username']);
                $stmt->execute();
                
                sendTelegram("sendMessage", [
                    'chat_id' => $chatId,
                    'text' => "<tg-emoji emoji-id='{$pe[1]}'>🎉</tg-emoji> <b>شما با موفقیت در چالش ثبت‌نام شدید!</b> (🎟 ۱ تیکت اولیه دریافت کردید)\n\n🔗 <b>لینک اختصاصی زیرمجموعه‌گیری شما جهت افزایش تیکت و شانس برندگان:</b>\n" . $refLink,
                    'parse_mode' => 'HTML'
                ]);
                
                $stmt = $conn->prepare("SELECT COUNT(id) as total FROM participants WHERE lottery_id = ?");
                $stmt->bind_param("i", $lotteryId);
                $stmt->execute();
                $totalCountQuery = $stmt->get_result();
                $totalCount = $totalCountQuery ? $totalCountQuery->fetch_assoc()['total'] : 0;
                
                $keyboard = ['inline_keyboard' => [[
                    [
                        'text' => "شرکت در چالش ($totalCount نفر)", 
                        'url' => "https://t.me/" . $botUser['result']['username'] . "?start=join_" . $lotteryId,
                        'icon_custom_emoji_id' => $pe[1],
                        'style' => 'success' 
                    ]
                ]]];
                
                sendTelegram("editMessageReplyMarkup", [
                    'chat_id' => $lotData['channel_id'],
                    'message_id' => $lotData['message_id'],
                    'reply_markup' => json_encode($keyboard)
                ]);
                
                if ($lotData['end_type'] == 'count' && $totalCount >= $lotData['end_value']) {
                    finishLottery($lotteryId);
                }
            }
            exit;
        }

        if (strpos($param, "ref_") === 0) {
            $parts = explode("_", $param);
            $lotteryId = (int)$parts[1];
            $inviterId = $parts[2];
            
            if ($inviterId == $userId) {
                sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "❌ نمی‌توانید با لینک خودتان وارد شوید!"]);
                exit;
            }
            
            $stmt = $conn->prepare("SELECT id FROM participants WHERE lottery_id = ? AND user_id = ?");
            $stmt->bind_param("is", $lotteryId, $userId);
            $stmt->execute();
            $refCheck = $stmt->get_result();
            
            if ($refCheck && $refCheck->num_rows > 0) {
                sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "⚠️ شما قبلاً عضو این چالش شده‌اید."]);
            } else {
                $stmt = $conn->prepare("INSERT INTO participants (lottery_id, user_id, username, tickets, referred_by) VALUES (?, ?, ?, 1, ?)");
                $stmt->bind_param("isss", $lotteryId, $userId, $username, $inviterId);
                $stmt->execute();
                
                $stmt = $conn->prepare("UPDATE participants SET tickets = tickets + 1 WHERE lottery_id = ? AND user_id = ?");
                $stmt->bind_param("is", $lotteryId, $inviterId);
                $stmt->execute();
                
                $stmt = $conn->prepare("SELECT tickets FROM participants WHERE lottery_id = ? AND user_id = ?");
                $stmt->bind_param("is", $lotteryId, $inviterId);
                $stmt->execute();
                $newTicketsQuery = $stmt->get_result();
                $newTickets = $newTicketsQuery ? $newTicketsQuery->fetch_assoc()['tickets'] : 1;
                
                sendTelegram("sendMessage", [
                    'chat_id' => $inviterId,
                    'text' => "<tg-emoji emoji-id='{$pe[9]}'>🔔</tg-emoji> <b>ثبت رفرال جدید!</b>\nیک کاربر با لینک شما وارد چالش شد. ۱ تیکت جدید گرفتید!\n🎟 <b>مجموع تیکت‌های شما:</b> $newTickets",
                    'parse_mode' => 'HTML'
                ]);
                
                sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "✅ با دعوت دوست خود، با موفقیت وارد چالش شدید و ۱ تیکت شانس اولیه دریافت کردید!"]);
            }
            exit;
        } 
        
        $mainMenu = ['inline_keyboard' => [
            [['text' => "ساخت چالش جدید", 'callback_data' => "menu_create", 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "چالش‌های من", 'callback_data' => "menu_my_challenges", 'icon_custom_emoji_id' => $pe[2], 'style' => 'primary']]
        ]];
        if ($userId == $adminId) {
            $mainMenu['inline_keyboard'][] = [['text' => "پنل مدیریت", 'callback_data' => "menu_admin", 'icon_custom_emoji_id' => $pe[6], 'style' => 'danger']];
        }
        
        sendTelegram("sendMessage", [
            'chat_id' => $chatId,
            'text' => "<tg-emoji emoji-id='{$pe[10]}'>🎁</tg-emoji> <b>به پلتفرم هوشمند قرعه‌کشی و چالش رفرالی کانال‌ها خوش آمدید!</b>\nجهت شروع یکی از گزینه‌های زیر را انتخاب کنید:",
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode($mainMenu)
        ]);
        exit;
    }

    // === پیاده‌سازی گام‌های ساخت چالش جدید ===
    if ($currentStep == "get_channel") {
        if (strpos($text, "@") === 0 || is_numeric($text)) {
            $stmt = $conn->prepare("INSERT INTO lotteries (creator_id, channel_id, status) VALUES (?, ?, 'pending')");
            $stmt->bind_param("ss", $userId, $text);
            $stmt->execute();
            
            setUserStep($userId, "get_text");
            
            $premium_emojis_text = "";
            foreach($pe as $id => $eid) {
                $premium_emojis_text .= "<tg-emoji emoji-id='{$eid}'>⭐</tg-emoji> ";
            }
            
            sendTelegram("sendMessage", [
                'chat_id' => $chatId,
                'text' => "📝 <b>گام ۲:</b> لطفاً متن چالش خود را ارسال کنید (می‌توانید از ایموجی‌های پرمیوم استفاده کنید):\n\n" . $premium_emojis_text,
                'parse_mode' => 'HTML'
            ]);
        } else {
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "❌ آیدی کانال نامعتبر است. لطفاً همراه با @ ارسال کنید:"]);
        }
        exit;
    }

    if ($currentStep == "get_text") {
        $stmt = $conn->prepare("SELECT id FROM lotteries WHERE creator_id = ? ORDER BY id DESC LIMIT 1");
        $stmt->bind_param("s", $userId);
        $stmt->execute();
        $lastLotResult = $stmt->get_result();
        $lastLot = $lastLotResult ? $lastLotResult->fetch_assoc() : null;
        
        if ($lastLot) {
            $msgId = $message['message_id'];
            $stmt = $conn->prepare("UPDATE lotteries SET text = ?, message_id = ? WHERE id = ?");
            $stmt->bind_param("sii", $text, $msgId, $lastLot['id']);
            $stmt->execute();
            
            setUserStep($userId, "get_winners_count");
            
            sendTelegram("sendMessage", [
                'chat_id' => $chatId,
                'text' => "🏆 <b>گام بعدی:</b> تعداد برندگان چالش را مشخص کنید (به صورت عدد لاتین، مثلاً 3):",
                'parse_mode' => 'HTML'
            ]);
        }
        exit;
    }

    if ($currentStep == "get_winners_count") {
        $winnersCount = (int)$text;
        if ($winnersCount <= 0) {
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "❌ تعداد برندگان باید حداقل ۱ نفر باشد"]);
            exit;
        }
        
        $stmt = $conn->prepare("UPDATE lotteries SET winners_count = ? WHERE creator_id = ? ORDER BY id DESC LIMIT 1");
        $stmt->bind_param("is", $winnersCount, $userId);
        $stmt->execute();
        
        setUserStep($userId, "select_condition_type");
        
        $buttons = [
            [['text' => "بر اساس تعداد نفرات", 'callback_data' => "settype_count", 'icon_custom_emoji_id' => $pe[1], 'style' => 'success']],
            [['text' => "بر اساس زمان (دقیقه)", 'callback_data' => "settype_time", 'icon_custom_emoji_id' => $pe[6], 'style' => 'danger']]
        ];
        sendTelegram("sendMessage", [
            'chat_id' => $chatId,
            'text' => "⚙️ <b>گام آخر (شرط پایان چالش):</b> نوع شرط پایان چالش را انتخاب کنید:",
            'parse_mode' => 'HTML',
            'reply_markup' => json_encode(['inline_keyboard' => $buttons])
        ]);
        exit;
    }

    if ($currentStep == "get_end_value") {
        $val = (int)$text;
        if ($val <= 0) {
            sendTelegram("sendMessage", ['chat_id' => $chatId, 'text' => "❌ عدد وارد شده باید بزرگتر از صفر باشد. مجدد ارسال کنید:"]);
            exit;
        }
        
        $stmt = $conn->prepare("SELECT id, end_type, channel_id, text, winners_count FROM lotteries WHERE creator_id = ? ORDER BY id DESC LIMIT 1");
        $stmt->bind_param("s", $userId);
        $stmt->execute();
        $lastLotResult = $stmt->get_result();
        $lastLot = $lastLotResult ? $lastLotResult->fetch_assoc() : null;
        
        if ($lastLot) {
            $finalVal = ($lastLot['end_type'] == 'time') ? time() + ($val * 60) : $val;
            $stmt = $conn->prepare("UPDATE lotteries SET end_value = ?, status = 'active' WHERE id = ?");
            $stmt->bind_param("ii", $finalVal, $lastLot['id']);
            $stmt->execute();
            
            setUserStep($userId, "none");
            
            $botUser = sendTelegram("getMe", []);
            $joinUrl = "https://t.me/" . $botUser['result']['username'] . "?start=join_" . $lastLot['id'];
            
            $keyboard = [
                'inline_keyboard' => [
                    [
                        'text' => "شرکت در چالش (0 نفر)",
                        'url' => $joinUrl,
                        'icon_custom_emoji_id' => $pe[1],
                        'style' => 'success'
                    ]
                ]
            ];
            
            sendTelegram("sendMessage", [
                'chat_id' => $lastLot['channel_id'],
                'text' => $lastLot['text'],
                'parse_mode' => 'HTML',
                'reply_markup' => json_encode($keyboard)
            ]);
            
            sendTelegram("sendMessage", [
                'chat_id' => $chatId,
                'text' => "✅ چالش شما با موفقیت ایجاد و در کانال ارسال شد!",
                'parse_mode' => 'HTML'
            ]);
        }
        exit;
    }
}
?>