[], "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);
?>