<?php /** * Telegram Kino Bot - Asosiy fayl * Version: 1.0 */ // session_start(); // ❌ webhook botda KERAK EMAS // Konfiguratsiyani yuklash if (!file_exists('config.php')) { die("❌ config.php fayli topilmadi. install.php orqali o'rnatishni boshlang."); } require_once 'config.php'; // Database bilan bog'lanish try { $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); if ($conn->connect_error) { throw new Exception("Database bilan bog'lanish xatosi: " . $conn->connect_error); } $conn->set_charset("utf8mb4"); } catch (Exception $e) { logError($e->getMessage()); die("❌ Database xatosi. Log faylni tekshiring."); } // Funksiyalar function logError($error_message, $user_id = null) { global $conn; if (ENABLE_LOGGING) { $stmt = $conn->prepare("INSERT INTO logs (error_type, error_message, user_id) VALUES (?, ?, ?)"); $error_type = 'general'; $stmt->bind_param("ssi", $error_type, $error_message, $user_id); $stmt->execute(); $stmt->close(); // Faylga yozish file_put_contents(LOG_FILE, date('Y-m-d H:i:s') . " - " . $error_message . "\n", FILE_APPEND); } } function sendMessage($chat_id, $text, $reply_markup = null, $parse_mode = 'HTML') { $url = API_URL . 'sendMessage'; $data = [ 'chat_id' => $chat_id, 'text' => $text, 'parse_mode' => $parse_mode ]; if ($reply_markup) { $data['reply_markup'] = json_encode($reply_markup); } return curlRequest($url, $data); } function sendPhoto($chat_id, $photo, $caption = null, $reply_markup = null, $parse_mode = 'HTML') { $url = API_URL . 'sendPhoto'; $data = [ 'chat_id' => $chat_id, 'photo' => $photo ]; if ($caption) { $data['caption'] = $caption; $data['parse_mode'] = $parse_mode; } if ($reply_markup) { $data['reply_markup'] = json_encode($reply_markup); } return curlRequest($url, $data); } function sendVideo($chat_id, $video, $caption = null, $reply_markup = null, $parse_mode = 'HTML') { $url = API_URL . 'sendVideo'; $data = [ 'chat_id' => $chat_id, 'video' => $video ]; if ($caption) { $data['caption'] = $caption; $data['parse_mode'] = $parse_mode; } if ($reply_markup) { $data['reply_markup'] = json_encode($reply_markup); } return curlRequest($url, $data); } function editMessageText($chat_id, $message_id, $text, $reply_markup = null, $parse_mode = 'HTML') { $url = API_URL . 'editMessageText'; $data = [ 'chat_id' => $chat_id, 'message_id' => $message_id, 'text' => $text, 'parse_mode' => $parse_mode ]; if ($reply_markup) { $data['reply_markup'] = json_encode($reply_markup); } return curlRequest($url, $data); } function editMessageReplyMarkup($chat_id, $message_id, $reply_markup = null) { $url = API_URL . 'editMessageReplyMarkup'; $data = [ 'chat_id' => $chat_id, 'message_id' => $message_id ]; if ($reply_markup) { $data['reply_markup'] = json_encode($reply_markup); } return curlRequest($url, $data); } function answerCallbackQuery($callback_query_id, $text = null, $show_alert = false) { $url = API_URL . 'answerCallbackQuery'; $data = [ 'callback_query_id' => $callback_query_id ]; if ($text) { $data['text'] = $text; $data['show_alert'] = $show_alert; } return curlRequest($url, $data); } function curlRequest($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $result = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { logError("cURL Error: " . curl_error($ch)); } curl_close($ch); if ($http_code != 200) { logError("HTTP Error: " . $http_code . " - " . $result); } return json_decode($result, true); } function getChatMember($chat_id, $user_id) { $url = API_URL . 'getChatMember'; $data = [ 'chat_id' => $chat_id, 'user_id' => $user_id ]; return curlRequest($url, $data); } function isAdmin($user_id) { return $user_id == ADMIN_ID; } function getUser($user_id) { global $conn; $stmt = $conn->prepare("SELECT * FROM users WHERE user_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $result = $stmt->get_result(); $user = $result->fetch_assoc(); $stmt->close(); return $user; } function createUser($user_id, $first_name, $username = null) { global $conn; $stmt = $conn->prepare("INSERT INTO users (user_id, first_name, username, joined_date, last_active) VALUES (?, ?, ?, NOW(), NOW())"); $stmt->bind_param("iss", $user_id, $first_name, $username); $result = $stmt->execute(); $stmt->close(); return $result; } function updateUserLastActive($user_id) { global $conn; $stmt = $conn->prepare("UPDATE users SET last_active = NOW() WHERE user_id = ?"); $stmt->bind_param("i", $user_id); $stmt->execute(); $stmt->close(); } function getSetting($key) { global $conn; $stmt = $conn->prepare("SELECT setting_value FROM settings WHERE setting_key = ?"); $stmt->bind_param("s", $key); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $stmt->close(); return $row ? $row['setting_value'] : null; } function setSetting($key, $value) { global $conn; $stmt = $conn->prepare("INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = ?"); $stmt->bind_param("sss", $key, $value, $value); $result = $stmt->execute(); $stmt->close(); return $result; } function getLanguage($lang_code) { global $conn; $stmt = $conn->prepare("SELECT * FROM languages WHERE lang_code = ?"); $stmt->bind_param("s", $lang_code); $stmt->execute(); $result = $stmt->get_result(); $lang = $result->fetch_assoc(); $stmt->close(); return $lang; } function getMovieByCode($code) { global $conn; $stmt = $conn->prepare("SELECT * FROM movies WHERE movie_code = ? AND status = 'active'"); $stmt->bind_param("s", $code); $stmt->execute(); $result = $stmt->get_result(); $movie = $result->fetch_assoc(); $stmt->close(); return $movie; } function incrementMovieViews($movie_id) { global $conn; $stmt = $conn->prepare("UPDATE movies SET views = views + 1 WHERE id = ?"); $stmt->bind_param("i", $movie_id); $stmt->execute(); $stmt->close(); } function addToHistory($user_id, $movie_id) { global $conn; $stmt = $conn->prepare("INSERT INTO user_history (user_id, movie_id) VALUES (?, ?)"); $stmt->bind_param("ii", $user_id, $movie_id); $result = $stmt->execute(); $stmt->close(); return $result; } function getUserHistory($user_id, $limit = 10) { global $conn; $stmt = $conn->prepare(" SELECT h.*, m.movie_name, m.movie_code FROM user_history h JOIN movies m ON h.movie_id = m.id WHERE h.user_id = ? ORDER BY h.viewed_date DESC LIMIT ? "); $stmt->bind_param("ii", $user_id, $limit); $stmt->execute(); $result = $stmt->get_result(); $history = []; while ($row = $result->fetch_assoc()) { $history[] = $row; } $stmt->close(); return $history; } function checkSubscription($user_id, $channels) { $not_subscribed = []; foreach ($channels as $channel) { $result = getChatMember($channel['channel_username'], $user_id); if (isset($result['ok']) && $result['ok']) { $status = $result['result']['status']; if (!in_array($status, ['member', 'administrator', 'creator'])) { $not_subscribed[] = $channel; } } else { $not_subscribed[] = $channel; } } return $not_subscribed; } function getRequiredChannels() { global $conn; $result = $conn->query("SELECT * FROM channels WHERE is_required = 1 AND is_active = 1"); $channels = []; while ($row = $result->fetch_assoc()) { $channels[] = $row; } return $channels; } function addComplaint($user_id, $movie_id) { global $conn; // 24 soat ichida shikoyat bormi tekshirish $stmt = $conn->prepare("SELECT * FROM complaints WHERE user_id = ? AND movie_id = ? AND complaint_date > DATE_SUB(NOW(), INTERVAL 24 HOUR)"); $stmt->bind_param("ii", $user_id, $movie_id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $stmt->close(); return false; } $stmt->close(); // Shikoyat qo'shish $stmt = $conn->prepare("INSERT INTO complaints (user_id, movie_id) VALUES (?, ?)"); $stmt->bind_param("ii", $user_id, $movie_id); $result = $stmt->execute(); $stmt->close(); return $result; } function getMovieComplaints($movie_id) { global $conn; $stmt = $conn->prepare("SELECT COUNT(*) as count FROM complaints WHERE movie_id = ?"); $stmt->bind_param("i", $movie_id); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_assoc(); $stmt->close(); return $row['count']; } function notifyAdmin($message) { sendMessage(ADMIN_ID, $message); } function createInlineKeyboard($buttons) { $keyboard = []; foreach ($buttons as $button) { if (isset($button['row'])) { if (!isset($keyboard[$button['row']])) { $keyboard[$button['row']] = []; } $keyboard[$button['row']][] = [ 'text' => $button['text'], 'callback_data' => $button['callback_data'] ?? null, 'url' => $button['url'] ?? null ]; } else { $keyboard[] = [ [ 'text' => $button['text'], 'callback_data' => $button['callback_data'] ?? null, 'url' => $button['url'] ?? null ] ]; } } return ['inline_keyboard' => $keyboard]; } function prepareStartMessage($user) { $start_text = getSetting('start_text'); $start_photo = getSetting('start_photo'); $force_subscribe = getSetting('force_subscribe'); // {first_name} va {username} ni almashtirish $display_name = $user['username'] ? '@' . $user['username'] : $user['first_name']; $start_text = str_replace('{first_name}', $user['first_name'], $start_text); $start_text = str_replace('{username}', $display_name, $start_text); return [ 'text' => $start_text, 'photo' => $start_photo, 'force_subscribe' => $force_subscribe ]; } function createStartKeyboard($user_id) { $force_subscribe = getSetting('force_subscribe'); $enable_history = getSetting('enable_history'); $enable_complaint = getSetting('enable_complaint'); $buttons = []; if ($force_subscribe) { $channels = getRequiredChannels(); foreach ($channels as $channel) { $buttons[] = [ 'text' => '📢 ' . $channel['channel_name'], 'url' => 'https://t.me/' . $channel['channel_username'] ]; } $buttons[] = [ 'text' => '✅ Obunani tekshirish', 'callback_data' => 'check_subscription' ]; } else { $buttons[] = [ 'text' => '🎬 Kino kodini yuboring', 'callback_data' => 'send_code' ]; if ($enable_history) { $buttons[] = [ 'text' => '📜 Ko‘rishlar tarixi', 'callback_data' => 'view_history' ]; } $buttons[] = [ 'text' => '❓ Yordam', 'callback_data' => 'show_help' ]; } return createInlineKeyboard($buttons); } // Webhookdan kelgan ma'lumotlarni olish $content = file_get_contents("php://input"); $update = json_decode($content, true); if (!$update) { exit; } // Log yozish (faqat debug rejimda) if (DEBUG) { file_put_contents('debug.log', date('Y-m-d H:i:s') . " - " . json_encode($update) . "\n", FILE_APPEND); } // User ID ni aniqlash $user_id = null; $chat_id = null; $message_id = null; $callback_query_id = null; if (isset($update['message'])) { $user_id = $update['message']['from']['id']; $chat_id = $update['message']['chat']['id']; $message_id = $update['message']['message_id']; $text = $update['message']['text'] ?? null; } elseif (isset($update['callback_query'])) { $user_id = $update['callback_query']['from']['id']; $chat_id = $update['callback_query']['message']['chat']['id']; $message_id = $update['callback_query']['message']['message_id']; $callback_query_id = $update['callback_query']['id']; $callback_data = $update['callback_query']['data'] ?? null; } if (!$user_id) { exit; } // User ma'lumotlarini olish yoki yaratish $user = getUser($user_id); if (!$user) { $first_name = $update['message']['from']['first_name'] ?? 'Foydalanuvchi'; $username = $update['message']['from']['username'] ?? null; if (createUser($user_id, $first_name, $username)) { $user = getUser($user_id); } } // Oxirgi faollikni yangilash updateUserLastActive($user_id); // Bloklangan foydalanuvchini tekshirish if ($user['is_banned'] && !isAdmin($user_id)) { $ban_message = "❌ Siz botdan bloklangansiz.\n\nSabab: " . ($user['ban_reason'] ?? 'Ko‘rsatilmagan'); if (isset($text) && $text == '/start') { sendMessage($chat_id, $ban_message); } exit; } // Main message handler if (isset($text)) { handleTextMessage($chat_id, $user_id, $text, $message_id, $user); } // Callback query handler if (isset($callback_data)) { handleCallbackQuery($chat_id, $user_id, $callback_query_id, $callback_data, $message_id, $user); } $conn->close(); function handleTextMessage($chat_id, $user_id, $text, $message_id, $user) { // Start buyrug'i if ($text == '/start') { handleStart($chat_id, $user_id, $user); return; } // Admin buyruqlari if (isAdmin($user_id)) { if ($text == '/admin') { handleAdminMenu($chat_id, $user_id); return; } if ($text == '/stats') { handleStats($chat_id, $user_id); return; } if ($text == '/broadcast') { handleBroadcastStart($chat_id, $user_id); return; } } // Kino kodini qidirish if (preg_match('/^#\d+$/', $text)) { handleMovieSearch($chat_id, $user_id, $text, $user); return; } // Yordam if ($text == '/help') { handleHelp($chat_id, $user_id, $user); return; } // Tarix if ($text == '/history') { handleHistory($chat_id, $user_id, $user); return; } // Default xabar $message = "Kino kodini yuboring yoki yordam bo‘limini tanlang.\n\nMasalan: #001"; sendMessage($chat_id, $message); } function handleStart($chat_id, $user_id, $user) { global $conn; $start_data = prepareStartMessage($user); $keyboard = createStartKeyboard($user_id); if ($start_data['photo']) { sendPhoto($chat_id, $start_data['photo'], $start_data['text'], $keyboard); } else { sendMessage($chat_id, $start_data['text'], $keyboard); } } function handleMovieSearch($chat_id, $user_id, $code, $user) { $movie = getMovieByCode($code); if (!$movie) { sendMessage($chat_id, "❌ Bu kod bilan kino topilmadi."); return; } // Ko'rishlar sonini oshirish incrementMovieViews($movie['id']); // Tarixga qo'shish $enable_history = getSetting('enable_history'); if ($enable_history) { addToHistory($user_id, $movie['id']); } // Inline tugmalar $enable_complaint = getSetting('enable_complaint'); $buttons = [ ['text' => "👁 {$movie['views']} ko‘rilgan", 'callback_data' => 'view_count'] ]; if ($enable_complaint) { $buttons[] = ['text' => '⚠️ Kino ishlamayapti', 'callback_data' => 'complaint_' . $movie['id']]; } $keyboard = createInlineKeyboard($buttons); // Kinoni yuborish $caption = "🎬 {$movie['movie_name']}\n🔑 Kod: {$movie['movie_code']}\n👁 Ko‘rishlar: {$movie['views']}"; sendVideo($chat_id, $movie['movie_file_id'], $caption, $keyboard); } function handleHistory($chat_id, $user_id, $user) { $enable_history = getSetting('enable_history'); if (!$enable_history) { sendMessage($chat_id, "❌ Bu funksiya o‘chirilgan."); return; } $history = getUserHistory($user_id, MAX_HISTORY); if (empty($history)) { sendMessage($chat_id, "📜 Siz hali kinolarni ko‘rmagansiz."); return; } $message = "📜 Oxirgi ko‘rilgan kinolar:\n\n"; foreach ($history as $item) { $message .= "🔹 {$item['movie_code']} - {$item['movie_name']}\n"; } $keyboard = createInlineKeyboard([ ['text' => '🔄 Menyuga qaytish', 'callback_data' => 'back_to_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleHelp($chat_id, $user_id, $user) { $help_text = getSetting('help_text'); if (!$help_text) { $help_text = "Quyidagi buyruqlardan foydalanishingiz mumkin:\n\n/start - Botni qayta ishga tushirish\n/history - Ko‘rish tarixi\n/help - Yordam"; } $keyboard = createInlineKeyboard([ ['text' => '🎬 Kino kodini yuboring', 'callback_data' => 'send_code'], ['text' => '📜 Ko‘rishlar tarixi', 'callback_data' => 'view_history'] ]); sendMessage($chat_id, $help_text, $keyboard); } function handleCallbackQuery($chat_id, $user_id, $callback_query_id, $callback_data, $message_id, $user) { // Obunani tekshirish if ($callback_data == 'check_subscription') { handleCheckSubscription($chat_id, $user_id, $callback_query_id, $message_id, $user); return; } // Menyuga qaytish if ($callback_data == 'back_to_menu') { handleStart($chat_id, $user_id, $user); answerCallbackQuery($callback_query_id); return; } // Tarixni ko'rish if ($callback_data == 'view_history') { handleHistory($chat_id, $user_id, $user); answerCallbackQuery($callback_query_id); return; } // Yordam if ($callback_data == 'show_help') { handleHelp($chat_id, $user_id, $user); answerCallbackQuery($callback_query_id); return; } // Kod yuborish if ($callback_data == 'send_code') { $message = "🎬 Kino kodini yuboring.\n\nMasalan: #001, #002, #003..."; sendMessage($chat_id, $message); answerCallbackQuery($callback_query_id); return; } // Shikoyat if (strpos($callback_data, 'complaint_') === 0) { $movie_id = str_replace('complaint_', '', $callback_data); handleComplaint($chat_id, $user_id, $callback_query_id, $movie_id); return; } // Admin callback lar if (isAdmin($user_id)) { handleAdminCallbacks($chat_id, $user_id, $callback_query_id, $callback_data, $message_id); return; } // Eskirgan tugma answerCallbackQuery($callback_query_id, "Bu amal eskirgan. Iltimos, menyudan qayta tanlang.", true); } function handleCheckSubscription($chat_id, $user_id, $callback_query_id, $message_id, $user) { if (isAdmin($user_id)) { handleStart($chat_id, $user_id, $user); answerCallbackQuery($callback_query_id, "✅ Admin sifatida obunadan o‘tgingiz!"); return; } $channels = getRequiredChannels(); $not_subscribed = checkSubscription($user_id, $channels); if (empty($not_subscribed)) { // Obuna bo'lgan handleStart($chat_id, $user_id, $user); answerCallbackQuery($callback_query_id, "✅ Obuna muvaffaqiyatli tekshirildi!"); } else { // Obuna bo'lmagan $message = "❌ Siz " . count($not_subscribed) . " ta kanalga obuna bo‘lmadingiz:\n\n"; foreach ($not_subscribed as $channel) { $message .= "📢 {$channel['channel_name']}\n"; } $message .= "\nIltimos, barcha kanallarga obuna bo‘ling!"; answerCallbackQuery($callback_query_id, $message, true); } } function handleComplaint($chat_id, $user_id, $callback_query_id, $movie_id) { $result = addComplaint($user_id, $movie_id); if ($result) { // Adminni xabardor qilish $movie = getMovieByCode('#' . $movie_id); if ($movie) { $complaint_count = getMovieComplaints($movie_id); $admin_message = "⚠️ Yangi shikoyat!\n\n🎬 {$movie['movie_name']}\n🔑 Kod: {$movie['movie_code']}\n👁 Shikoyatlar soni: {$complaint_count}"; notifyAdmin($admin_message); } answerCallbackQuery($callback_query_id, "✅ Shikoyat yuborildi. Admin ko‘rib chiqadi."); } else { answerCallbackQuery($callback_query_id, "⚠️ Siz 24 soat ichida bu kinoga shikoyat yuborgansiz.", true); } } // Admin funksiyalari function handleAdminMenu($chat_id, $user_id) { $keyboard = createInlineKeyboard([ ['text' => '📊 Statistika', 'callback_data' => 'admin_stats'], ['text' => '🎬 Kinolar', 'callback_data' => 'admin_movies'], ['text' => '📢 Majburiy obuna', 'callback_data' => 'admin_channels'], ['text' => '⚙️ Sozlamalar', 'callback_data' => 'admin_settings'], ['text' => '📢 Ommaviy xabar', 'callback_data' => 'admin_broadcast'], ['text' => '🌐 Tillar', 'callback_data' => 'admin_languages'] ]); $message = "👨‍💼 **Admin Panel**\n\nQuyidagi bo‘limlardan birini tanlang:"; sendMessage($chat_id, $message, $keyboard); } function handleAdminCallbacks($chat_id, $user_id, $callback_query_id, $callback_data, $message_id) { global $conn; // Statistika if ($callback_data == 'admin_stats') { handleStats($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Kinolar if ($callback_data == 'admin_movies') { handleAdminMovies($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Kanallar if ($callback_data == 'admin_channels') { handleAdminChannels($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Sozlamalar if ($callback_data == 'admin_settings') { handleAdminSettings($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Ommaviy xabar if ($callback_data == 'admin_broadcast') { handleBroadcastStart($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Tillar if ($callback_data == 'admin_languages') { handleAdminLanguages($chat_id, $user_id); answerCallbackQuery($callback_query_id); return; } // Kino qo'shish if ($callback_data == 'add_movie') { $message = "Kino qo'shish uchun quyidagi formatda yuboring:\n\n🎬 Kino nomi\n🔑 Kino kodi (#001)\n📹 Video fayl\n📷 Rasm (ixtiyoriy)\n📝 Caption (ixtiyoriy)"; sendMessage($chat_id, $message); return; } // Majburiy obunani yoqish/o'chirish if ($callback_data == 'toggle_force_subscribe') { $current = getSetting('force_subscribe'); $new_value = $current == '1' ? '0' : '1'; setSetting('force_subscribe', $new_value); handleAdminChannels($chat_id, $user_id); answerCallbackQuery($callback_query_id, $new_value == '1' ? "✅ Majburiy obuna yoqildi" : "❌ Majburiy obuna o'chirildi"); return; } // Tarixni yoqish/o'chirish if ($callback_data == 'toggle_history') { $current = getSetting('enable_history'); $new_value = $current == '1' ? '0' : '1'; setSetting('enable_history', $new_value); handleAdminSettings($chat_id, $user_id); answerCallbackQuery($callback_query_id, $new_value == '1' ? "✅ Tarix yoqildi" : "❌ Tarix o'chirildi"); return; } // Shikoyatni yoqish/o'chirish if ($callback_data == 'toggle_complaint') { $current = getSetting('enable_complaint'); $new_value = $current == '1' ? '0' : '1'; setSetting('enable_complaint', $new_value); handleAdminSettings($chat_id, $user_id); answerCallbackQuery($callback_query_id, $new_value == '1' ? "✅ Shikoyat yoqildi" : "❌ Shikoyat o'chirildi"); return; } // Multilang ni yoqish/o'chirish if ($callback_data == 'toggle_multilang') { $current = getSetting('enable_multilang'); $new_value = $current == '1' ? '0' : '1'; setSetting('enable_multilang', $new_value); handleAdminSettings($chat_id, $user_id); answerCallbackQuery($callback_query_id, $new_value == '1' ? "✅ Ko'p tilli tizim yoqildi" : "❌ Ko'p tilli tizim o'chirildi"); return; } answerCallbackQuery($callback_query_id); } function handleStats($chat_id, $user_id) { global $conn; // Foydalanuvchilar soni $result = $conn->query("SELECT COUNT(*) as count FROM users"); $users_count = $result->fetch_assoc()['count']; // Kinolar soni $result = $conn->query("SELECT COUNT(*) as count FROM movies WHERE status = 'active'"); $movies_count = $result->fetch_assoc()['count']; // Eng ko'p ko'rilgan kinolar $result = $conn->query("SELECT * FROM movies WHERE status = 'active' ORDER BY views DESC LIMIT 5"); $top_movies = []; while ($row = $result->fetch_assoc()) { $top_movies[] = $row; } $message = "📊 **Statistika**\n\n"; $message .= "👥 Foydalanuvchilar: {$users_count}\n"; $message .= "🎬 Kinolar: {$movies_count}\n\n"; $message .= "🔥 Eng ko'p ko'rilgan kinolar:\n"; foreach ($top_movies as $movie) { $message .= "\n🔹 {$movie['movie_code']} - {$movie['movie_name']} ({$movie['views']} ko'rish)"; } $keyboard = createInlineKeyboard([ ['text' => '🔙 Orqaga', 'callback_data' => 'admin_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleAdminMovies($chat_id, $user_id) { global $conn; $result = $conn->query("SELECT * FROM movies ORDER BY added_date DESC LIMIT 10"); $movies = []; while ($row = $result->fetch_assoc()) { $movies[] = $row; } $message = "🎬 **Kinolar**\n\n"; if (empty($movies)) { $message .= "Hali kinolar yo‘q."; } else { foreach ($movies as $movie) { $status_icon = $movie['status'] == 'active' ? '✅' : '❌'; $message .= "{$status_icon} {$movie['movie_code']} - {$movie['movie_name']}\n"; $message .= " 👁 {$movie['views']} ko'rish | {$movie['added_date']}\n\n"; } } $keyboard = createInlineKeyboard([ ['text' => '➕ Kino qo‘shish', 'callback_data' => 'add_movie'], ['text' => '🔙 Orqaga', 'callback_data' => 'admin_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleAdminChannels($chat_id, $user_id) { global $conn; $channels = getRequiredChannels(); $force_subscribe = getSetting('force_subscribe'); $message = "📢 **Majburiy obuna**\n\n"; $message .= "Holat: " . ($force_subscribe == '1' ? '✅ Yoqilgan' : '❌ O‘chirilgan') . "\n\n"; if (empty($channels)) { $message .= "Kanallar yo‘q."; } else { $message .= "Kanallar:\n"; foreach ($channels as $channel) { $message .= "\n📢 @{$channel['channel_username']} - {$channel['channel_name']}"; } } $keyboard = createInlineKeyboard([ ['text' => $force_subscribe == '1' ? '❌ O‘chirish' : '✅ Yoqish', 'callback_data' => 'toggle_force_subscribe'], ['text' => '🔙 Orqaga', 'callback_data' => 'admin_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleAdminSettings($chat_id, $user_id) { $enable_history = getSetting('enable_history'); $enable_complaint = getSetting('enable_complaint'); $enable_multilang = getSetting('enable_multilang'); $message = "⚙️ **Sozlamalar**\n\n"; $message .= "📜 Tarix: " . ($enable_history == '1' ? '✅ Yoqilgan' : '❌ O‘chirilgan') . "\n"; $message .= "⚠️ Shikoyat: " . ($enable_complaint == '1' ? '✅ Yoqilgan' : '❌ O‘chirilgan') . "\n"; $message .= "🌐 Ko'p tilli: " . ($enable_multilang == '1' ? '✅ Yoqilgan' : '❌ O‘chirilgan') . "\n"; $keyboard = createInlineKeyboard([ ['text' => $enable_history == '1' ? '❌ Tarixni o‘chirish' : '✅ Tarixni yoqish', 'callback_data' => 'toggle_history'], ['text' => $enable_complaint == '1' ? '❌ Shikoyatni o‘chirish' : '✅ Shikoyatni yoqish', 'callback_data' => 'toggle_complaint'], ['text' => $enable_multilang == '1' ? '❌ Ko'p tilli o‘chirish' : '✅ Ko'p tilli yoqish', 'callback_data' => 'toggle_multilang'], ['text' => '🔙 Orqaga', 'callback_data' => 'admin_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleAdminLanguages($chat_id, $user_id) { global $conn; $result = $conn->query("SELECT * FROM languages"); $languages = []; while ($row = $result->fetch_assoc()) { $languages[] = $row; } $message = "🌐 **Tillar**\n\n"; foreach ($languages as $lang) { $message .= "🏳️ {$lang['lang_code']} - {$lang['lang_name']}\n"; } $keyboard = createInlineKeyboard([ ['text' => '🔙 Orqaga', 'callback_data' => 'admin_menu'] ]); sendMessage($chat_id, $message, $keyboard); } function handleBroadcastStart($chat_id, $user_id) { $message = "📢 **Ommaviy xabar**\n\nXabarni yuboring. Bu xabar barcha foydalanuvchilarga yuboriladi.\n\n⚠️ Ehtiyot bo'ling! Buni bekor qilib bo'lmaydi."; sendMessage($chat_id, $message); } // Todo ni yangilash ?>