[], "contact" => null]); $promocodes = load_json(PROMOCODES_FILE, []); $orders = load_json(ORDERS_FILE, []); $states = load_json(STATES_FILE, []); // State management funksiyalari function get_user_state($user_id) { global $states; return isset($states[$user_id]) ? $states[$user_id] : null; } function set_user_state($user_id, $state, $data = []) { global $states; $states[$user_id] = [ 'state' => $state, 'data' => $data ]; save_json(STATES_FILE, $states); } function clear_user_state($user_id) { global $states; if (isset($states[$user_id])) { unset($states[$user_id]); save_json(STATES_FILE, $states); } } function get_state_data($user_id, $key = null) { global $states; if (!isset($states[$user_id]) || !isset($states[$user_id]['data'])) { return null; } if ($key === null) { return $states[$user_id]['data']; } return isset($states[$user_id]['data'][$key]) ? $states[$user_id]['data'][$key] : null; } function set_state_data($user_id, $key, $value) { global $states; if (!isset($states[$user_id])) { $states[$user_id] = ['state' => '', 'data' => []]; } $states[$user_id]['data'][$key] = $value; save_json(STATES_FILE, $states); } // Biznes logika funksiyalari function referal_count_by_views($v) { if ($v <= 1000) return 1; elseif ($v <= 5000) return 3; elseif ($v <= 10000) return 5; else return max(1, intval($v / 2000)); } function calculate_price($views) { if ($views >= 100000) return intval($views * 0.5); elseif ($views >= 50000) return intval($views * 0.6); elseif ($views >= 20000) return intval($views * 0.7); elseif ($views >= 10000) return intval($views * 0.8); elseif ($views >= 5000) return intval($views * 0.9); elseif ($views >= 1000) return $views; else return -1; } function get_hashtags($v) { return [ "#Videolaringizni rekga chiqaradigan suniy intelektni hohlaysizmi? Telegramga RekchiAi_bot ga kiring.", ".", ".", "#Telegramdagi #RekchiAi_bot" ]; } function get_valid_ref_count($uid) { global $users; if (!isset($users[$uid]['refs'])) return 0; $confirmed_refs = array_filter($users[$uid]['refs'], function($ref) use ($users) { return isset($users[$ref]['confirmed']) && $users[$ref]['confirmed']; }); $bonus = isset($users[$uid]['bonus_refs']) ? $users[$uid]['bonus_refs'] : 0; return count($confirmed_refs) + $bonus; } function generate_captcha() { return rand(1000, 9999); } // Telegram API funksiyalari function bot_sendMessage($chat_id, $text, $reply_markup = null, $parse_mode = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/sendMessage"; $data = [ 'chat_id' => $chat_id, 'text' => $text ]; if ($parse_mode) $data['parse_mode'] = $parse_mode; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function bot_editMessageText($chat_id, $message_id, $text, $reply_markup = null, $parse_mode = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/editMessageText"; $data = [ 'chat_id' => $chat_id, 'message_id' => $message_id, 'text' => $text ]; if ($parse_mode) $data['parse_mode'] = $parse_mode; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function bot_sendPhoto($chat_id, $photo, $caption = null, $reply_markup = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/sendPhoto"; $data = [ 'chat_id' => $chat_id, 'photo' => $photo ]; if ($caption) $data['caption'] = $caption; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function bot_sendVideo($chat_id, $video, $caption = null, $reply_markup = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/sendVideo"; $data = [ 'chat_id' => $chat_id, 'video' => $video ]; if ($caption) $data['caption'] = $caption; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function bot_sendDocument($chat_id, $document, $caption = null, $reply_markup = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/sendDocument"; $data = [ 'chat_id' => $chat_id, 'document' => $document ]; if ($caption) $data['caption'] = $caption; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function bot_editMessageCaption($chat_id, $message_id, $caption, $reply_markup = null) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/editMessageCaption"; $data = [ 'chat_id' => $chat_id, 'message_id' => $message_id, 'caption' => $caption ]; if ($reply_markup) $data['reply_markup'] = json_encode($reply_markup); return send_telegram_request($url, $data); } function answer_callback_query($callback_query_id, $text = null, $show_alert = false) { $url = "https://api.telegram.org/bot" . API_TOKEN . "/answerCallbackQuery"; $data = ['callback_query_id' => $callback_query_id]; if ($text) $data['text'] = $text; if ($show_alert) $data['show_alert'] = true; return send_telegram_request($url, $data); } function send_telegram_request($url, $data) { $options = [ 'http' => [ 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data), 'timeout' => 10 ] ]; $context = stream_context_create($options); $result = @file_get_contents($url, false, $context); return $result ? json_decode($result, true) : false; } // Tugma tuzilmalari function get_reply_keyboard($username = "") { global $buttons; $is_admin = in_array($username, ADMINS); $kb = [ [["text" => "👁 1k"], ["text" => "👁 5k"], ["text" => "👁 10k"]], [["text" => "🔢 Ko'rishlar sonini kiritish"], ["text" => "👬 Referal"]], [["text" => "💳 Xarid qilish"], ["text" => "💰 Balans"]], [["text" => "🎬 Video darslik"], ["text" => "🎟 Promokod"]], [["text" => "📞 Adminga murojaat"]] ]; foreach ($buttons as $title => $btn) { $kb[] = [["text" => $title]]; } if ($is_admin) { $kb[] = [["text" => "📋 Tugmalar ro'yxati"], ["text" => "⚙️ Admin panel"]]; $kb[] = [["text" => "📊 Statistika"]]; } return ["keyboard" => $kb, "resize_keyboard" => true]; } function get_xarid_keyboard() { $kb = [ [["text" => "🛒 1K sotib olish"], ["text" => "🛒 5K sotib olish"], ["text" => "🛒 10K sotib olish"]], [["text" => "🔢 Ko'rish sonini kiritish 💰"], ["text" => "❌ Bekor qilish"]] ]; return ["keyboard" => $kb, "resize_keyboard" => true]; } function get_admin_keyboard() { $kb = [ [["text" => "➕ Kanal qo'shish"], ["text" => "❌ Kanal o'chirish"]], [["text" => "🆕 Tugma qo'shish"], ["text" => "🗑 Tugma o'chirish"]], [["text" => "🎬 Video darslik qo'shish"], ["text" => "🗑 Video o'chirish"]], [["text" => "🎟 Promokod qo'shish"], ["text" => "📋 Promokodlar"]], [["text" => "📋 Tugmalar ro'yxati"], ["text" => "📢 Reklama tarqatish"]], [["text" => "👤 Adminga murojaat sozlash"], ["text" => "🗑 Promokod o'chirish"]], [["text" => "📊 Statistika"], ["text" => "⬅️ Ortga"]] ]; return ["keyboard" => $kb, "resize_keyboard" => true]; } function create_purchase_kb($views) { return [ "inline_keyboard" => [ [["text" => "🛒 Xarid qilish", "callback_data" => "buy_paid_" . $views]] ] ]; } function make_free_scheme_kb() { return [ "inline_keyboard" => [ [["text" => "🎬 Videoni ko'rish", "callback_data" => "free_video"]], [["text" => "👁 Isbot kanali", "url" => "https://t.me/rekchi_tv"]] ] ]; } function make_contact_admin_kb() { global $config; $contact = $config['contact']; $kb = [ "inline_keyboard" => [ [["text" => "📤 Murojaat yuborish", "callback_data" => "start_contact"]], [["text" => "👁 Isbot kanali", "url" => "https://t.me/rekchi_tv"]], [["text" => "🔎 Kontaktni ko'rsatish", "callback_data" => "show_contact"]] ] ]; return $kb; } function make_subscribe_keyboard($not_subscribed) { $rows = []; foreach ($not_subscribed as $ch) { $label = $ch; if (is_string($ch) && strpos($ch, '@') === 0) { $url = "https://t.me/" . substr($ch, 1); } else { $url = "https://t.me/" . $ch; } $rows[] = [["text" => $label, "url" => $url]]; } $rows[] = [["text" => "✅ Obuna bo'ldim", "callback_data" => "check_sub"]]; return ["inline_keyboard" => $rows]; } // Asosiy handler $input = file_get_contents("php://input"); $update = json_decode($input, true); if (!$update) { exit; } // Message yoki Callback Query ni aniqlash $message = isset($update['message']) ? $update['message'] : null; $callback_query = isset($update['callback_query']) ? $update['callback_query'] : null; if ($message) { $chat_id = $message['chat']['id']; $user_id = $message['from']['id']; $username = isset($message['from']['username']) ? $message['from']['username'] : ""; $text = isset($message['text']) ? $message['text'] : ""; $uid = strval($user_id); // Foydalanuvchini yaratish/yangilash if (!isset($users[$uid])) { $users[$uid] = [ "refs" => [], "confirmed" => false, "captcha" => "", "hashtags" => [], "await_video" => false, "views" => 0, "username" => $username, "balance" => 0, "intro_video_sent" => false, "bonus_refs" => 0, "ref_of" => null ]; } else { $users[$uid]["username"] = $username; } // User state ni olish $user_state_data = get_user_state($uid); $user_state = $user_state_data ? $user_state_data['state'] : null; // /start commandasi if (strpos($text, '/start') === 0) { $parts = explode(' ', $text); $ref = count($parts) > 1 ? $parts[1] : null; // Referalni qo'shish if ($ref && $ref != $uid && !isset($users[$uid]["ref_of"])) { $users[$uid]["ref_of"] = $ref; if (isset($users[$ref]) && !in_array($uid, $users[$ref]["refs"])) { $users[$ref]["refs"][] = $uid; } } save_json(USERS_FILE, $users); $c = generate_captcha(); $users[$uid]["captcha"] = strval($c); save_json(USERS_FILE, $users); // State ni o'rnatish set_user_state($uid, "waiting_for_captcha"); bot_sendMessage($chat_id, "🤖 Botdan foydalanish uchun kodni kiriting:\n{$c}", null, "HTML"); exit; } // BEKOR QILISH va ORTGA tugmalari if ($text == "❌ Bekor qilish" || $text == "⬅️ Ortga") { clear_user_state($uid); bot_sendMessage($chat_id, "Bekor qilindi. Asosiy menyu:", get_reply_keyboard($username)); exit; } // CAPTCHA tekshirish - STATE asosida if ($user_state == "waiting_for_captcha") { if ($text == $users[$uid]["captcha"]) { $users[$uid]["confirmed"] = true; save_json(USERS_FILE, $users); clear_user_state($uid); // Intro video yuborish if (!empty($videos) && !$users[$uid]["intro_video_sent"]) { $first_video = array_key_first($videos); $meta = $videos[$first_video]; bot_sendVideo($chat_id, $first_video, "🎬 {$meta['title']}\n{$meta['desc']}"); $users[$uid]["intro_video_sent"] = true; save_json(USERS_FILE, $users); } bot_sendMessage($chat_id, "✅ Tasdiqlandi! Endi botdan foydalanishingiz mumkin.", get_reply_keyboard($username)); } else { $c = generate_captcha(); $users[$uid]["captcha"] = strval($c); save_json(USERS_FILE, $users); bot_sendMessage($chat_id, "❌ Kod noto'g'ri! Yangi kod:\n{$c}", null, "HTML"); } exit; } // Foydalanuvchi tasdiqlanmagan bo'lsa if (!$users[$uid]["confirmed"]) { $c = generate_captcha(); $users[$uid]["captcha"] = strval($c); save_json(USERS_FILE, $users); set_user_state($uid, "waiting_for_captcha"); bot_sendMessage($chat_id, "🤖 Botdan foydalanish uchun kodni kiriting:\n{$c}", null, "HTML"); exit; } // STATE lar asosida xabarlarni qayta ishlash switch ($user_state) { case "waiting_for_purchase_views": if (is_numeric($text)) { $views = intval($text); $price = calculate_price($views); if ($price == -1 || $views < 1000) { bot_sendMessage($chat_id, "❌ Kamida 1000 ko'rish bo'lishi kerak!", get_xarid_keyboard()); } else { bot_sendMessage($chat_id, "🛒 {$views} ta ko'rish narxi: {$price} so'm", create_purchase_kb($views), "HTML"); } clear_user_state($uid); } else { bot_sendMessage($chat_id, "🔢 Faqat son kiriting! Masalan: 15000", get_xarid_keyboard()); } exit; case "waiting_for_views": if (is_numeric($text)) { $views = intval($text); // Minimal ko'rishlar tekshiruvi if ($views < 1000) { bot_sendMessage($chat_id, "❌ Minimal ko'rishlar soni: 1000 ta", get_reply_keyboard($username)); clear_user_state($uid); exit; } $valid_count = get_valid_ref_count($uid); $refs_needed = referal_count_by_views($views); if ($valid_count < $refs_needed) { bot_sendMessage($chat_id, "⚠️ {$views} ta ko'rish uchun {$refs_needed} ta tasdiqlangan referal kerak.\n\n" . "💰 Sizda hozir: {$valid_count} ta tasdiqlangan referal bor.\n" . "🎁 Qanday bepul sxema olish mumkin: Videoni ko'ring 👇", make_free_scheme_kb()); clear_user_state($uid); } else { $hs = get_hashtags($views); $users[$uid]["hashtags"] = $hs; $users[$uid]["await_video"] = true; $users[$uid]["views"] = $views; $users[$uid]["used_ref_for_views"] = true; save_json(USERS_FILE, $users); $ht = implode("\n", $hs); bot_sendMessage($chat_id, "✅ Referallaringizdan {$refs_needed} tasi ishlatiladi.\n\n" . "🎯 {$views} ta ko'rish uchun mos heshteglar:\n
{$ht}
\n\n" . "📋 Nusxalash uchun ustiga bosing.\n📹 Endi video havolasini yuboring:", get_reply_keyboard($username), "HTML"); set_user_state($uid, "waiting_for_video_link"); } } else { bot_sendMessage($chat_id, "🔢 Faqat son kiriting! Masalan: 15000\n" . "❗ Minimal: 1000 ta ko'rish", get_reply_keyboard($username)); } exit; case "waiting_for_video_link": if (strpos($text, 'http') === 0) { $views = $users[$uid]["views"]; // Buyurtma qabul qilish $order_id = rand(100000, 999999); $orders[$order_id] = [ "user_id" => $uid, "username" => $username, "link" => $text, "views" => $views, "created_at" => date('c'), "status" => "active" ]; save_json(ORDERS_FILE, $orders); // Isbot kanaliga xabar yuborish $proof_msg = "📌 Yangi buyurtma qabul qilindi\n" . "Foydalanuvchi: @" . ($username ?: $uid) . " (ID: {$uid})\n" . "Order ID: {$order_id}\n" . "Link: {$text}\n" . "Talab qilingan ko'rishlar: {$views}\n" . "Vaqt: " . date('Y-m-d H:i:s'); $proof_kb = [ "inline_keyboard" => [ [["text" => "🎬 Video ko'rish", "url" => $text]], [ ["text" => "👤 Foydalanuvchi", "callback_data" => "user_{$uid}"], ["text" => "👁 Isbot kanali", "url" => "https://t.me/rekchi_tv"] ] ] ]; bot_sendMessage(PROOF_CHANNEL, $proof_msg, $proof_kb); bot_sendMessage($chat_id, "✅ Buyurtma qabul qilindi!\nID: {$order_id}\nKo'rishlar: {$views}\nVideo: {$text}", get_reply_keyboard($username), "HTML"); $users[$uid]["await_video"] = false; $users[$uid]["hashtags"] = []; $users[$uid]["views"] = 0; $users[$uid]["used_ref_for_views"] = false; save_json(USERS_FILE, $users); clear_user_state($uid); } else { bot_sendMessage($chat_id, "❗ Faqat video havolasini yuboring!", get_reply_keyboard($username)); } exit; case "waiting_for_topup": if (is_numeric($text)) { $amount = intval($text); if ($amount < 1000) { bot_sendMessage($chat_id, "💳 Minimal to'ldirish miqdori: 1000 so'm!"); } else { set_user_state($uid, "waiting_for_topup_receipt", ['amount' => $amount]); $kb = [ "inline_keyboard" => [ [["text" => "📋 Kartani nusxalash", "callback_data" => "copy_card"]], [["text" => "📤 To'lov chekini yuborish", "callback_data" => "upload_receipt"]], [["text" => "❌ Bekor qilish", "callback_data" => "cancel_topup"]] ] ]; bot_sendMessage($chat_id, "💳 Pulni quyidagi karta raqamiga o'tkazing:\n" . TOPUP_CARD_NUMBER . "\n" . "🔔 O'tkazma summasi: " . number_format($amount) . " so'm\n" . "1) Kartaga pul o'tkazing.\n" . "2) To'lov chekini (skrinshot / foto / PDF) pastdan yuboring.\n" . "3) Admin tekshiradi va tasdiqlasa balansga mablag' qo'shiladi.", $kb, "HTML"); } } else { bot_sendMessage($chat_id, "💳 Iltimos, faqat son kiriting! Masalan: 10000"); } exit; case "waiting_for_topup_receipt": $amount = get_state_data($uid, 'amount'); if ($amount === null) { bot_sendMessage($chat_id, "❗ To'lov miqdori topilmadi. Iltimos, qaytadan boshlang.", get_reply_keyboard($username)); clear_user_state($uid); exit; } $caption = "🔔 To'lov fayli\n" . "Foydalanuvchi: @" . ($username ?: $uid) . "\n" . "ID: {$uid}\n" . "Summasi: " . number_format($amount) . " so'm\n" . "Admin: tasdiqlang yoki bekor qiling."; $kb = [ "inline_keyboard" => [ [ ["text" => "✅ Tasdiqlash", "callback_data" => "approve_topup|{$uid}|{$amount}"], ["text" => "❌ Bekor qilish", "callback_data" => "reject_topup|{$uid}|{$amount}"] ] ] ]; $sent = false; $message_result = null; // Rasm yuborilgan bo'lsa if (isset($message['photo'])) { $photo = $message['photo'][count($message['photo'])-1]['file_id']; $message_result = bot_sendPhoto(RECEIPT_CHANNEL, $photo, $caption, $kb); $sent = $message_result && $message_result['ok']; } // Dokument yuborilgan bo'lsa elseif (isset($message['document'])) { $document = $message['document']['file_id']; $message_result = bot_sendDocument(RECEIPT_CHANNEL, $document, $caption, $kb); $sent = $message_result && $message_result['ok']; } // Matn yuborilgan bo'lsa elseif ($text) { $message_result = bot_sendMessage(RECEIPT_CHANNEL, $caption . "\n\nFoydalanuvchi xabari:\n" . $text, $kb); $sent = $message_result && $message_result['ok']; } if ($sent) { bot_sendMessage($chat_id, "✅ Chek yuborildi! Administratsiya tekshiradi. Sizga xabar keladi.", get_reply_keyboard($username)); } else { bot_sendMessage($chat_id, "❗ Chekni yuborishda xatolik yuz berdi. Iltimos, admin bilan bog'laning.", get_reply_keyboard($username)); // Adminlarga xabar yuborish foreach (ADMINS as $admin) { bot_sendMessage("@" . $admin, "❌ To'lov chekini yuborishda xatolik!\nFoydalanuvchi: @{$username}\nID: {$uid}\nSumma: " . number_format($amount) . " so'm"); } } clear_user_state($uid); exit; case "waiting_for_promocode": $code = strtoupper(trim($text)); if (isset($promocodes[$code])) { $pc = $promocodes[$code]; $used_by = isset($pc['used_by']) ? $pc['used_by'] : []; $total_used = array_sum($used_by); if (isset($used_by[$uid])) { bot_sendMessage($chat_id, "❌ Siz bu promokoddan allaqachon foydalangansiz!", get_reply_keyboard($username)); } elseif (count($used_by) >= $pc['limit']) { bot_sendMessage($chat_id, "❌ Ushbu promokodning foydalanuvchi limiti tugagan!", get_reply_keyboard($username)); } elseif ($total_used >= $pc['amount']) { bot_sendMessage($chat_id, "❌ Ushbu promokodning bonus miqdori tugagan!", get_reply_keyboard($username)); } else { $remaining = $pc['amount'] - $total_used; if ($pc['type'] == 'views') { $give = min(1000, $remaining); $users[$uid]["hashtags"] = get_hashtags($give); $users[$uid]["await_video"] = true; $users[$uid]["views"] = $give; $used_by[$uid] = $give; $promocodes[$code]['used_by'] = $used_by; save_json(PROMOCODES_FILE, $promocodes); $ht = implode("\n", get_hashtags($give)); bot_sendMessage($chat_id, "🎉 Siz {$code} promokodidan foydalandingiz!\n" . "✅ {$give} ta ko'rish berildi.\n" . "🎯 Heshteglar:\n
{$ht}
\n" . "📹 Endi video havolasini yuboring:", null, "HTML"); set_user_state($uid, "waiting_for_video_link"); } elseif ($pc['type'] == 'balance') { $give = min(1000000000, $remaining); $users[$uid]["balance"] += $give; $used_by[$uid] = $give; $promocodes[$code]['used_by'] = $used_by; save_json(PROMOCODES_FILE, $promocodes); save_json(USERS_FILE, $users); bot_sendMessage($chat_id, "🎉 {$give} so'm balansga qo'shildi!", get_reply_keyboard($username)); clear_user_state($uid); } elseif ($pc['type'] == 'referral') { $users[$uid]["bonus_refs"] = isset($users[$uid]["bonus_refs"]) ? $users[$uid]["bonus_refs"] + 1 : 1; $used_by[$uid] = 1; $promocodes[$code]['used_by'] = $used_by; save_json(PROMOCODES_FILE, $promocodes); save_json(USERS_FILE, $users); bot_sendMessage($chat_id, "🎉 1ta referal bonus sifatida berildi", get_reply_keyboard($username)); clear_user_state($uid); } } } else { bot_sendMessage($chat_id, "❌ Bunday promokod mavjud emas!", get_reply_keyboard($username)); clear_user_state($uid); } exit; // Admin state lar case "admin_await_channel": $channel = trim($text); if ($channel) { if (!in_array($channel, $config['channels'])) { $config['channels'][] = $channel; save_json(CONFIG_FILE, $config); bot_sendMessage($chat_id, "✅ Kanal qo'shildi: {$channel}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❗ Bu kanal allaqachon ro'yxatda bor.", get_admin_keyboard()); } } clear_user_state($uid); exit; case "admin_await_remove_channel": $channel = trim($text); if (in_array($channel, $config['channels'])) { $config['channels'] = array_diff($config['channels'], [$channel]); save_json(CONFIG_FILE, $config); bot_sendMessage($chat_id, "✅ Kanal o'chirildi: {$channel}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❌ Kanal topilmadi.", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_button_title": $title = trim($text); if (isset($buttons[$title])) { bot_sendMessage($chat_id, "❗ Bu tugma allaqachon mavjud.", get_admin_keyboard()); clear_user_state($uid); } else { set_user_state($uid, "admin_await_button_msg", ['title' => $title]); bot_sendMessage($chat_id, "Tugma uchun xabarni kiriting:"); } exit; case "admin_await_button_msg": $title = get_state_data($uid, 'title'); $msg_text = trim($text); if ($title) { $buttons[$title] = ["msg" => $msg_text]; save_json(BUTTONS_FILE, $buttons); bot_sendMessage($chat_id, "✅ Tugma qo'shildi: {$title}", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_remove_button": $title = trim($text); if (isset($buttons[$title])) { unset($buttons[$title]); save_json(BUTTONS_FILE, $buttons); bot_sendMessage($chat_id, "✅ Tugma o'chirildi: {$title}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❌ Tugma topilmadi.", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_video_title": $title = trim($text); set_user_state($uid, "admin_await_video_file", ['title' => $title]); bot_sendMessage($chat_id, "Video faylini yuboring (.mp4):"); exit; case "admin_await_video_file": if (isset($message['video'])) { $title = get_state_data($uid, 'title'); $file_id = $message['video']['file_id']; $videos[$file_id] = [ "title" => $title, "desc" => $message['caption'] ?? "", "file_id" => $file_id ]; save_json(VIDEOS_META, $videos); bot_sendMessage($chat_id, "✅ Video darslik qo'shildi: {$title}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❗ Faqat video fayl yuboring!", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_remove_video": $title = trim($text); $found = null; foreach ($videos as $vid_id => $meta) { if (is_array($meta) && isset($meta['title']) && $meta['title'] == $title) { $found = $vid_id; break; } } if ($found) { unset($videos[$found]); save_json(VIDEOS_META, $videos); bot_sendMessage($chat_id, "✅ Video o'chirildi: {$title}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❌ Video topilmadi.", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_remove_promocode": $code = strtoupper(trim($text)); if (isset($promocodes[$code])) { unset($promocodes[$code]); save_json(PROMOCODES_FILE, $promocodes); bot_sendMessage($chat_id, "✅ Promokod o'chirildi: {$code}", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "❌ Bunday promokod yo'q.", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_contact": $contact = trim($text); if ($contact) { $config['contact'] = $contact; save_json(CONFIG_FILE, $config); bot_sendMessage($chat_id, "✅ Admin kontakt saqlandi: {$contact}", get_admin_keyboard()); } clear_user_state($uid); exit; case "admin_await_broadcast": $broadcast_text = $text; $sent = 0; $failed = 0; foreach ($users as $user_id => $user_data) { if (isset($user_data['confirmed']) && $user_data['confirmed']) { $result = bot_sendMessage($user_id, $broadcast_text); if ($result && $result['ok']) { $sent++; } else { $failed++; } } } bot_sendMessage($chat_id, "✅ Reklama tarqatildi!\nYuborildi: {$sent}\nXato: {$failed}", get_admin_keyboard()); clear_user_state($uid); exit; case "admin_await_promocode_name": $name = strtoupper(trim($text)); if (isset($promocodes[$name])) { bot_sendMessage($chat_id, "❗ Bunday promokod allaqachon mavjud.", get_admin_keyboard()); clear_user_state($uid); } else { set_user_state($uid, "admin_await_promocode_type", ['name' => $name]); bot_sendMessage($chat_id, "Bonus turini tanlang:", ["keyboard" => [ [["text" => "views"]], [["text" => "balance"]], [["text" => "referral"]] ], "resize_keyboard" => true] ); } exit; case "admin_await_promocode_type": if (in_array($text, ['views', 'balance', 'referral'])) { set_user_state($uid, "admin_await_promocode_amount", [ 'name' => get_state_data($uid, 'name'), 'type' => $text ]); bot_sendMessage($chat_id, "Umumiy miqdorni kiriting (masalan: 10000):"); } else { bot_sendMessage($chat_id, "❌ Noto'g'ri tur. views / balance / referral kiriting."); } exit; case "admin_await_promocode_amount": if (is_numeric($text)) { set_user_state($uid, "admin_await_promocode_limit", [ 'name' => get_state_data($uid, 'name'), 'type' => get_state_data($uid, 'type'), 'amount' => intval($text) ]); bot_sendMessage($chat_id, "Foydalanish limitini kiriting (nechta odam):"); } else { bot_sendMessage($chat_id, "❗ Faqat son kiriting."); } exit; case "admin_await_promocode_limit": if (is_numeric($text)) { $data = get_state_data($uid); $promocodes[$data['name']] = [ "type" => $data['type'], "amount" => $data['amount'], "limit" => intval($text), "used_by" => [] ]; save_json(PROMOCODES_FILE, $promocodes); bot_sendMessage($chat_id, "✅ Promokod qo'shildi!\nKod: {$data['name']}\nTur: {$data['type']}\nMiqdor: {$data['amount']}\nLimit: {$text} ta", get_admin_keyboard(), "HTML" ); } else { bot_sendMessage($chat_id, "❗ Faqat son kiriting."); } clear_user_state($uid); exit; } // Asosiy tugmalarni boshqarish - AVVAL STATE TOZALASH if (in_array($text, [ "👁 1k", "👁 5k", "👁 10k", "💳 Xarid qilish", "💰 Balans", "🎬 Video darslik", "🎟 Promokod", "📞 Adminga murojaat", "📋 Tugmalar ro'yxati", "📊 Statistika", "⚙️ Admin panel" ])) { clear_user_state($uid); } // Asosiy tugmalarni boshqarish switch ($text) { case "👁 1k": $valid_count = get_valid_ref_count($uid); if ($valid_count >= 1) { $hs = get_hashtags(1000); $users[$uid]["hashtags"] = $hs; $users[$uid]["await_video"] = true; $users[$uid]["views"] = 1000; $users[$uid]["used_ref_for_views"] = true; save_json(USERS_FILE, $users); $ht = implode("\n", $hs); bot_sendMessage($chat_id, "Referallaringizdan 1 tasi ishlatiladi.\n" . "🎯 1k ko'rish uchun mos heshteglar:\n
{$ht}
\n" . "📋 Nusxalash uchun ustiga bosing.\n📹 Endi video havolasini yuboring:", get_reply_keyboard($username), "HTML"); set_user_state($uid, "waiting_for_video_link"); } else { bot_sendMessage($chat_id, "⚠️ 1K ko'rish uchun 1 ta tasdiqlangan referal kerak.\n🎁 Qanday bepul sxema olish mumkin: Videoni ko'ring 👇", make_free_scheme_kb()); } break; case "👁 5k": $valid_count = get_valid_ref_count($uid); if ($valid_count >= 3) { $hs = get_hashtags(5000); $users[$uid]["hashtags"] = $hs; $users[$uid]["await_video"] = true; $users[$uid]["views"] = 5000; $users[$uid]["used_ref_for_views"] = true; save_json(USERS_FILE, $users); $ht = implode("\n", $hs); bot_sendMessage($chat_id, "Referallaringizdan 3 tasi ishlatiladi.\n" . "🎯 5k ko'rish uchun mos heshteglar:\n
{$ht}
\n" . "📋 Nusxalash uchun ustiga bosing.\n📹 Endi video havolasini yuboring:", get_reply_keyboard($username), "HTML"); set_user_state($uid, "waiting_for_video_link"); } else { bot_sendMessage($chat_id, "⚠️ 5K ko'rish uchun 3 ta tasdiqlangan referal kerak.\n🎁 Qanday bepul sxema olish mumkin: Videoni ko'ring 👇", make_free_scheme_kb()); } break; case "👁 10k": $valid_count = get_valid_ref_count($uid); if ($valid_count >= 5) { $hs = get_hashtags(10000); $users[$uid]["hashtags"] = $hs; $users[$uid]["await_video"] = true; $users[$uid]["views"] = 10000; $users[$uid]["used_ref_for_views"] = true; save_json(USERS_FILE, $users); $ht = implode("\n", $hs); bot_sendMessage($chat_id, "Referallaringizdan 5 tasi ishlatiladi.\n" . "🎯 10k ko'rish uchun mos heshteglar:\n
{$ht}
\n" . "📋 Nusxalash uchun ustiga bosing.\n📹 Endi video havolasini yuboring:", get_reply_keyboard($username), "HTML"); set_user_state($uid, "waiting_for_video_link"); } else { bot_sendMessage($chat_id, "⚠️ 10K ko'rish uchun 5 ta tasdiqlangan referal kerak.\n🎁 Qanday bepul sxema olish mumkin: Videoni ko'ring 👇", make_free_scheme_kb()); } break; case "🔢 Ko'rishlar sonini kiritish": bot_sendMessage($chat_id, "Kerakli ko'rishlar sonini kiriting (masalan: 25000):", get_reply_keyboard($username)); set_user_state($uid, "waiting_for_views"); break; case "💳 Xarid qilish": bot_sendMessage($chat_id, "🛒 Xarid qilish uchun quyidagilardan birini tanlang:", get_xarid_keyboard()); break; case "🔢 Ko'rish sonini kiritish 💰": bot_sendMessage($chat_id, "Necha ko'rish sotib olmoqchisiz? (faqat raqam kiriting, minimal: 1000):"); set_user_state($uid, "waiting_for_purchase_views"); break; case "🛒 1K sotib olish": $price = calculate_price(1000); bot_sendMessage($chat_id, "🛒 1K ko'rish narxi: {$price} so'm", create_purchase_kb(1000), "HTML"); break; case "🛒 5K sotib olish": $price = calculate_price(5000); bot_sendMessage($chat_id, "🛒 5K ko'rish narxi: {$price} so'm", create_purchase_kb(5000), "HTML"); break; case "🛒 10K sotib olish": $price = calculate_price(10000); bot_sendMessage($chat_id, "🛒 10K ko'rish narxi: {$price} so'm", create_purchase_kb(10000), "HTML"); break; case "💰 Balans": $balance = $users[$uid]["balance"]; $kb = [ "inline_keyboard" => [ [["text" => "💳 Balansni to'ldirish", "callback_data" => "topup_balance"]] ] ]; bot_sendMessage($chat_id, "💰 Sizning balansingiz: {$balance} so'm\n" . "👇 Balansni to'ldirish uchun pastdagi tugmani bosing:", $kb, "HTML"); break; case "👬 Referal": $confirmed_refs = array_filter($users[$uid]["refs"], function($ref) use ($users) { return isset($users[$ref]['confirmed']) && $users[$ref]['confirmed']; }); $bonus = $users[$uid]["bonus_refs"] ?? 0; $count = count($confirmed_refs) + $bonus; $ref_link = "https://t.me/" . BOT_USERNAME . "?start=" . $uid; $share_text = "👆Bu suniy intelekt sizni instagramdagi videolaringizni mutlaqo bepul rekka chiqarib beradi."; $encoded_text = urlencode($share_text . "\n" . $ref_link); $encoded_url = urlencode($ref_link); $url = "https://t.me/share/url?url={$encoded_url}&text={$encoded_text}"; $kb = [ "inline_keyboard" => [ [["text" => "📤 Do'stlarga taklif qilish", "url" => $url]] ] ]; bot_sendMessage($chat_id, "👬 Sizda hozirda {$count} ta tasdiqlangan referal mavjud.\n" . "🔗 Sizning shaxsiy havolangiz:\n{$ref_link}\n" . "📤 Do'stlaringizga taklif qilish uchun pastdagi tugmani bosing 👇", $kb, "HTML"); break; case "🎟 Promokod": bot_sendMessage($chat_id, "🎟 Promokodingizni kiriting:"); set_user_state($uid, "waiting_for_promocode"); break; case "📞 Adminga murojaat": $contact = $config['contact'] ?: "Hozircha kontakt belgilanmagan."; bot_sendMessage($chat_id, "Adminga murojaat qilish:\nKontakt: {$contact}", make_contact_admin_kb()); break; case "🎬 Video darslik": if (empty($videos)) { bot_sendMessage($chat_id, "🎬 Video darsliklar hozircha yo'q.", get_reply_keyboard($username)); } else { $video_list = []; $kb = []; $index = 0; foreach ($videos as $video_id => $meta) { if (is_array($meta)) { $video_list[] = $video_id; $kb[] = [["text" => $meta['title'], "callback_data" => "v{$index}"]]; } $index++; } set_user_state($uid, "video_list", ['videos' => $video_list]); $kb_markup = ["inline_keyboard" => $kb]; bot_sendMessage($chat_id, "🎬 Video darsliklar ro'yxati:", $kb_markup); } break; case "📋 Tugmalar ro'yxati": if (empty($buttons)) { bot_sendMessage($chat_id, "❗ Tugma ro'yxati bo'sh.", get_reply_keyboard($username)); } else { $msg = "📋 Tugmalar ro'yxati:\n"; foreach ($buttons as $key => $btn) { if (is_array($btn)) { $msg .= "\n{$key}: {$btn['msg']}"; } } bot_sendMessage($chat_id, $msg, get_reply_keyboard($username)); } break; case "📊 Statistika": if (in_array($username, ADMINS)) { $total = count($users); $confirmed = 0; $referred_in = 0; $referrers = 0; foreach ($users as $user) { if (isset($user['confirmed']) && $user['confirmed']) { $confirmed++; } if (isset($user['ref_of']) && $user['ref_of']) { $referred_in++; } if (isset($user['refs']) && !empty($user['refs'])) { $referrers++; } } $msg = "📊 Bot statistikasi\n\n" . "👥 Jami: {$total}\n" . "✅ Tasdiqlangan: {$confirmed}\n" . "📥 Referal orqali kirgan: {$referred_in}\n" . "📤 Referal yig'gan: {$referrers}"; bot_sendMessage($chat_id, $msg, null, "HTML"); } else { bot_sendMessage($chat_id, "Siz admin emassiz!", get_reply_keyboard($username)); } break; case "⚙️ Admin panel": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "⚙️ Admin panel", get_admin_keyboard()); } else { bot_sendMessage($chat_id, "Siz admin emassiz!", get_reply_keyboard($username)); } break; // Admin panel tugmalari case "➕ Kanal qo'shish": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "Kanal username (@kanal_nomi) yoki ID ni kiriting:"); set_user_state($uid, "admin_await_channel"); } break; case "❌ Kanal o'chirish": if (in_array($username, ADMINS)) { $channels = $config['channels']; if (empty($channels)) { bot_sendMessage($chat_id, "❗ Kanal ro'yxati bo'sh.", get_admin_keyboard()); } else { $msg = "O'chirish uchun kanalni tanlang:\n" . implode("\n", $channels); bot_sendMessage($chat_id, $msg); set_user_state($uid, "admin_await_remove_channel"); } } break; case "🆕 Tugma qo'shish": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "Yangi tugma nomini kiriting:"); set_user_state($uid, "admin_await_button_title"); } break; case "🗑 Tugma o'chirish": if (in_array($username, ADMINS)) { if (empty($buttons)) { bot_sendMessage($chat_id, "❗ Tugma ro'yxati bo'sh.", get_admin_keyboard()); } else { $msg = "O'chirish uchun tugmani tanlang:\n" . implode("\n", array_keys($buttons)); bot_sendMessage($chat_id, $msg); set_user_state($uid, "admin_await_remove_button"); } } break; case "🎬 Video darslik qo'shish": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "Video sarlavhasini kiriting:"); set_user_state($uid, "admin_await_video_title"); } break; case "🗑 Video o'chirish": if (in_array($username, ADMINS)) { if (empty($videos)) { bot_sendMessage($chat_id, "❗ Video ro'yxati bo'sh.", get_admin_keyboard()); } else { $msg = "O'chirish uchun videoni tanlang:\n"; foreach ($videos as $vid_id => $meta) { if (is_array($meta)) { $msg .= "📹 {$meta['title']}\n"; } } bot_sendMessage($chat_id, $msg . "\nVideo nomini kiriting:"); set_user_state($uid, "admin_await_remove_video"); } } break; case "👤 Adminga murojaat sozlash": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "📎 Iltimos adminga murojaat uchun kontaktni kiriting.\nMasalan: @username yoki chat_id (raqam)."); set_user_state($uid, "admin_await_contact"); } break; case "📢 Reklama tarqatish": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "Reklama xabarini kiriting:"); set_user_state($uid, "admin_await_broadcast"); } break; case "🎟 Promokod qo'shish": if (in_array($username, ADMINS)) { bot_sendMessage($chat_id, "Promokod nomini kiriting (masalan: YIL2025):"); set_user_state($uid, "admin_await_promocode_name"); } break; case "📋 Promokodlar": if (in_array($username, ADMINS)) { if (empty($promocodes)) { bot_sendMessage($chat_id, "🎟 Promokodlar mavjud emas.", get_admin_keyboard()); } else { $msg = "🎟 Promokodlar ro'yxati:\n"; foreach ($promocodes as $name => $pc) { $used = isset($pc['used_by']) ? array_sum($pc['used_by']) : 0; $msg .= "{$name}\nTur: {$pc['type']}\nMiqdor: {$pc['amount']}\nFoydalangan: {$used}\nLimit: {$pc['limit']} ta\n\n"; } bot_sendMessage($chat_id, $msg, get_admin_keyboard(), "HTML"); } } break; case "🗑 Promokod o'chirish": if (in_array($username, ADMINS)) { if (empty($promocodes)) { bot_sendMessage($chat_id, "🎟 Promokodlar yo'q.", get_admin_keyboard()); } else { $msg = "O'chirish uchun promokod nomini kiriting:\n" . implode("\n", array_keys($promocodes)); bot_sendMessage($chat_id, $msg); set_user_state($uid, "admin_await_remove_promocode"); } } break; default: // Maxsus tugmalarni tekshirish if (isset($buttons[$text])) { bot_sendMessage($chat_id, $buttons[$text]["msg"], get_reply_keyboard($username)); } break; } } // Callback Query ni boshqarish if ($callback_query) { $chat_id = $callback_query['message']['chat']['id']; $user_id = $callback_query['from']['id']; $username = isset($callback_query['from']['username']) ? $callback_query['from']['username'] : ""; $data = $callback_query['data']; $message_id = $callback_query['message']['message_id']; $callback_query_id = $callback_query['id']; $uid = strval($user_id); // Admin tekshiruvi funksiyasi $is_admin = in_array($username, ADMINS); switch ($data) { case "free_video": if (!empty($videos)) { $first_video = array_key_first($videos); $meta = $videos[$first_video]; bot_sendVideo($chat_id, $first_video, "🎬 {$meta['title']}\n{$meta['desc']}"); answer_callback_query($callback_query_id, "✅ Video yuborildi!"); } else { answer_callback_query($callback_query_id, "🎬 Video darsliklar mavjud emas!", true); } break; case "topup_balance": bot_sendMessage($chat_id, "💳 Balansni to'ldirish uchun miqdorni kiriting (so'm):\nMinimal: 1000 so'm"); set_user_state($uid, "waiting_for_topup"); answer_callback_query($callback_query_id); break; case "copy_card": bot_sendMessage($chat_id, "Karta raqami: " . TOPUP_CARD_NUMBER . "\nUstiga bosib nusxalashingiz mumkin.", null, "HTML"); answer_callback_query($callback_query_id, "Karta raqami yuborildi!", true); break; case "cancel_topup": clear_user_state($uid); bot_sendMessage($chat_id, "To'lov bekor qilindi.", get_reply_keyboard($username)); answer_callback_query($callback_query_id, "To'lov bekor qilindi."); break; case "upload_receipt": bot_sendMessage($chat_id, "📤 Iltimos, to'lov chekini (foto yoki PDF) yuboring:"); answer_callback_query($callback_query_id); break; case "show_contact": $contact = $config['contact']; if ($contact) { answer_callback_query($callback_query_id, "Kontakt: {$contact}", true); } else { answer_callback_query($callback_query_id, "Kontakt belgilanmagan.", true); } break; case "start_contact": $contact = $config['contact']; if ($contact) { if (strpos($contact, '@') === 0) { $url = "https://t.me/" . substr($contact, 1); } elseif (is_numeric($contact)) { $url = "https://t.me/" . ADMINS[0]; } else { $url = "https://t.me/" . ADMINS[0]; } } else { $url = "https://t.me/" . ADMINS[0]; } $kb = [ "inline_keyboard" => [ [["text" => "👤 Adminga o'tish", "url" => $url]] ] ]; bot_editMessageText($chat_id, $message_id, "Siz adminga murojaat qilishingiz mumkin:", $kb); answer_callback_query($callback_query_id); break; case "check_sub": // Obuna tekshirish (soddalashtirilgan) $users[$uid]["confirmed"] = true; save_json(USERS_FILE, $users); if (!empty($videos) && !$users[$uid]["intro_video_sent"]) { $first_video = array_key_first($videos); $meta = $videos[$first_video]; bot_sendVideo($chat_id, $first_video, "🎬 {$meta['title']}\n{$meta['desc']}"); $users[$uid]["intro_video_sent"] = true; save_json(USERS_FILE, $users); } bot_editMessageText($chat_id, $message_id, "✅ Obuna tasdiqlandi! Endi botdan foydalanishingiz mumkin."); bot_sendMessage($chat_id, "Asosiy menyu", get_reply_keyboard($username)); answer_callback_query($callback_query_id); break; case "approve_topup": if (!$is_admin) { answer_callback_query($callback_query_id, "Sizda bunday huquq yo'q!", true); break; } $parts = explode("|", $data); if (count($parts) === 3) { $target_uid = $parts[1]; $amount = intval($parts[2]); // Foydalanuvchi balansini yangilash if (!isset($users[$target_uid])) { $users[$target_uid] = ["balance" => 0]; } $users[$target_uid]["balance"] = isset($users[$target_uid]["balance"]) ? $users[$target_uid]["balance"] + $amount : $amount; save_json(USERS_FILE, $users); // Xabarni yangilash $original_caption = $callback_query['message']['caption'] ?? $callback_query['message']['text']; $new_caption = $original_caption . "\n\n✅ Tasdiqlandi: @" . $username . " (" . date('H:i') . ")"; // Yangilangan keyboard (tugmalarni o'chirish) $new_kb = [ "inline_keyboard" => [ [["text" => "✅ TASDIQLANDI", "callback_data" => "already_approved"]] ] ]; // Xabar turini tekshirish va yangilash if (isset($callback_query['message']['caption'])) { // Bu photo yoki document xabari bot_editMessageCaption(RECEIPT_CHANNEL, $message_id, $new_caption, $new_kb); } else { // Bu text xabari bot_editMessageText(RECEIPT_CHANNEL, $message_id, $new_caption, $new_kb); } // Foydalanuvchiga xabar bot_sendMessage($target_uid, "✅ To'lovingiz tasdiqlandi!\n" . "💳 Summa: " . number_format($amount) . " so'm\n" . "💰 Yangi balans: " . number_format($users[$target_uid]["balance"]) . " so'm\n\n" . "🎉 Endi botdan to'liq foydalanishingiz mumkin!"); answer_callback_query($callback_query_id, "✅ To'lov tasdiqlandi va balansga qo'shildi!"); } else { answer_callback_query($callback_query_id, "❌ Xatolik: Noto'g'ri ma'lumot!", true); } break; case "reject_topup": if (!$is_admin) { answer_callback_query($callback_query_id, "Sizda bunday huquq yo'q!", true); break; } $parts = explode("|", $data); if (count($parts) === 3) { $target_uid = $parts[1]; $amount = intval($parts[2]); // Xabarni yangilash $original_caption = $callback_query['message']['caption'] ?? $callback_query['message']['text']; $new_caption = $original_caption . "\n\n❌ Bekor qilindi: @" . $username . " (" . date('H:i') . ")"; // Yangilangan keyboard (tugmalarni o'chirish) $new_kb = [ "inline_keyboard" => [ [["text" => "❌ BEKOR QILINDI", "callback_data" => "already_rejected"]] ] ]; // Xabar turini tekshirish va yangilash if (isset($callback_query['message']['caption'])) { // Bu photo yoki document xabari bot_editMessageCaption(RECEIPT_CHANNEL, $message_id, $new_caption, $new_kb); } else { // Bu text xabari bot_editMessageText(RECEIPT_CHANNEL, $message_id, $new_caption, $new_kb); } // Foydalanuvchiga xabar bot_sendMessage($target_uid, "❌ Sizning to'lovingiz qabul qilinmadi.\n\n" . "💳 Summa: " . number_format($amount) . " so'm\n" . "📞 Sabab: Admin tomonidan rad etildi\n\n" . "ℹ️ Iltimos, chekni tekshirib qayta yuboring yoki admin bilan bog'laning."); answer_callback_query($callback_query_id, "❌ To'lov bekor qilindi!"); } else { answer_callback_query($callback_query_id, "❌ Xatolik: Noto'g'ri ma'lumot!", true); } break; case "already_approved": answer_callback_query($callback_query_id, "✅ Bu to'lov allaqachon tasdiqlangan!", true); break; case "already_rejected": answer_callback_query($callback_query_id, "❌ Bu to'lov allaqachon bekor qilingan!", true); break; default: if (strpos($data, "v") === 0) { // Video callback $index = intval(substr($data, 1)); $user_state_data = get_user_state($uid); $video_list = $user_state_data && isset($user_state_data['data']['videos']) ? $user_state_data['data']['videos'] : []; if (isset($video_list[$index])) { $video_id = $video_list[$index]; $meta = $videos[$video_id]; bot_sendVideo($chat_id, $video_id, "🎬 {$meta['title']}\n{$meta['desc']}"); answer_callback_query($callback_query_id, "✅ Video yuborildi!"); } else { answer_callback_query($callback_query_id, "❌ Video topilmadi!", true); } } elseif (strpos($data, "buy_paid_") === 0) { $views = intval(str_replace("buy_paid_", "", $data)); $price = calculate_price($views); if ($price == -1) { answer_callback_query($callback_query_id, "❌ Noto'g'ri ko'rish miqdori!", true); break; } $balance = $users[$uid]["balance"] ?? 0; if ($balance < $price) { answer_callback_query($callback_query_id, "❌ Balans yetarli emas!", true); break; } // Balansdan pulni ayrish $users[$uid]["balance"] -= $price; save_json(USERS_FILE, $users); $hs = get_hashtags($views); $users[$uid]["hashtags"] = $hs; $users[$uid]["await_video"] = true; $users[$uid]["views"] = $views; save_json(USERS_FILE, $users); $ht = implode("\n", $hs); bot_editMessageText($chat_id, $message_id, "✅ To'lov muvaffaqiyatli amalga oshirildi!\n" . "💰 {$price} so'm balansingizdan ayrildi.\n\n" . "🎯 {$views} ta ko'rish uchun mos heshteglar:\n
{$ht}
\n" . "📋 Nusxalash uchun ustiga bosing.\n📹 Endi video havolasini yuboring:", null, "HTML"); set_user_state($uid, "waiting_for_video_link"); answer_callback_query($callback_query_id, "To'lov muvaffaqiyatli!"); } break; } } // Ma'lumotlarni saqlash save_json(USERS_FILE, $users); save_json(STATES_FILE, $states); ?>