<?php
//-----------------------------------
// Developer : @MmD_Dev
//-----------------------------------
ini_set('error_logs', 'off');
error_reporting(0);
ob_start("ob_gzhandler");
date_default_timezone_set("asia/tehran");
require_once __DIR__ . '/phpqrcode/qrlib.php';
//-----------------------------------
$botToken = "7690191796:AAEZPpWGcEti1B--gM5NEVQrEHwStHmAteM";
$adminChatId = "586924831";
$apiUrl = "https://api.telegram.org/bot$botToken";
$botUrlForQr = 'https://qazii.shop/config/'; // آدرس دسترسی به فایل‌های روی هاست
$update = json_decode(file_get_contents("php://input"), true);
$chatId = $update['message']['chat']['id'] ?? null;
$text = $update['message']['text'] ?? null;
$filePath = "server.txt";
$logFile = "zaman.txt";
$tedadFile = 'tedad.txt';
$logFilePath = "sent_log.txt"; 
$logFilePath2 = "sent_log2.txt"; 
$rooz = 5;
$statusFile = "status.json";

function executeApiCall($method, $datas = []) {
    global $botToken;
    $ch = curl_init('https://api.telegram.org/bot' . $botToken . '/' . $method);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $datas);
    $res = curl_exec($ch);
    curl_close($ch);
    return json_decode($res, true);
}


function sendMessage($chatId, $text) {
    global $apiUrl;
    // اندازه حداکثری پیام در تلگرام
    $maxLength = 4096;
    
    // تقسیم متن به بخش‌های کوچکتر از 4096 کاراکتر
    $parts = str_split($text, $maxLength);
    
    foreach ($parts as $part) {
        $data = [
            'chat_id' => $chatId,
            'text' => $part,
            'parse_mode' => 'Markdown',
        ];
        // ارسال هر بخش به عنوان یک پیام جداگانه
        file_get_contents($apiUrl . "/sendMessage?" . http_build_query($data));
    }
}


function SendPhoto($id, $file_id, $text = null, $key = null) {
    $data = [
        'chat_id' => $id,
        'photo' => $file_id,
        'caption' => $text,
        'parse_mode' => "Markdown",
        'disable_web_page_preview' => true,
        'reply_markup' => $key
    ];
    return executeApiCall('sendPhoto', $data);
}

function addBorderImage($add) {
    $border = 30;
    $im = ImageCreateFromPNG($add);
    $width = ImageSx($im);
    $height = ImageSy($im);
    $img_adj_width = $width + 2 * $border;
    $img_adj_height = $height + 2 * $border;
    $newimage = imagecreatetruecolor($img_adj_width, $img_adj_height);
    $border_color = imagecolorallocate($newimage, 255, 255, 255);
    imagefilledrectangle($newimage, 0, 0, $img_adj_width, $img_adj_height, $border_color);
    imageCopyResized($newimage, $im, $border, $border, 0, 0, $width, $height, $width, $height);
    ImagePNG($newimage, $add, 5);
}

function RandomString($count = 9, $type = "all") {
    if ($type == "all") $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789';
    elseif ($type == "small") $characters = 'abcdef123456789';
    elseif ($type == "domain") $characters = 'abcdefghijklmnopqrstuvwxyz';

    $randstring = null;
    for ($i = 0; $i < $count; $i++) {
        $randstring .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randstring;
}

function addDaysToDate($date, $days) {
    $d = DateTime::createFromFormat("Y/m/d", $date);
    $d->modify("+$days day");
    return $d->format("Y/m/d");
}

if ($text == "✅ سرور تست رایگان ✅") {
    if ($chatId != $adminChatId) {
    $tedadData = file($tedadFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
         $userCount = 0;
         foreach ($tedadData as $line) {
             list($id, $count) = explode(":", $line);
             if ($id == $chatId) {
                 $userCount = (int)$count;
                 break;
             }
         }
       if ($userCount >= 5) {
             $zamanData = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
             $newData = [];
             $found = false;

             for ($i = 0; $i < count($zamanData); $i++) {
                 if (strpos($zamanData[$i], $chatId) !== false) {
                     // خط آی‌دی کاربر پیدا شد
                     $newData[] = $zamanData[$i]; // همون خط آی‌دی
     $oldDate = $zamanData[$i+1];
                     $newDate = addDaysToDate($oldDate, 15);
                     $newData[] = $newDate; // تاریخ جدید
                     $newData[] = $zamanData[$i+2]; // ساعت بدون تغییر
                     $i += 2;
                     $found = true;
                 } else {
                     $newData[] = $zamanData[$i];
                 }
             }
     if ($found) {
                 file_put_contents($logFile, implode(PHP_EOL, $newData) . PHP_EOL);
             }
    $newTedadData = [];
             foreach ($tedadData as $line) {
                 list($id, $count) = explode(":", $line);
                 if ($id == $chatId) {
                     $newTedadData[] = $id . ":0"; // ریست به صفر
                 } else {
                     $newTedadData[] = $line;
                 }
             }
             file_put_contents($tedadFile, implode(PHP_EOL, $newTedadData) . PHP_EOL);

sendMessage($chatId, "❌ شما به حداکثر تعداد دریافتی سرور تست رسیدید.\n🔒 تا ۱۵ روز دیگر نمی‌توانید سرور تست دریافت کنید.\n\nراه اندازی ربات /start");


             exit; // خروج از کد
         }
     }
}
if ($text === "/start") {
    $file = 'chat_id.txt';
    $chatId = (string) $chatId; // تبدیل چت آیدی به رشته برای ذخیره صحیح
  if (!file_exists($file)) {
         file_put_contents($file, ""); // ایجاد فایل در صورت عدم وجود
     }
    $chatIds = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // خواندن چت آیدی‌های ذخیره‌شده
    if (!in_array($chatId, $chatIds)) {
         file_put_contents($file, $chatId . PHP_EOL, FILE_APPEND); // اضافه کردن چت آیدی جدید
         $adminChatId = '586924831';
         $message = "یک عضو جدید اضافه شد: چت آیدی " . $chatId;
         file_get_contents($apiUrl . "/sendMessage?" . http_build_query([
             'chat_id' => $adminChatId,
             'text' => $message
         ]));
     }
 $keyboard = [
    [
        ['text' => '✅ سرور تست رایگان ✅'],
        ['text' => '🛒 خرید اشتراک یک‌ماهه']
    ],
    [
        ['text' => '⬇️ دانلود نرم افزار ⬇️'] // دکمه دانلود نرم افزار
    ]
];
     if ($chatId == $adminChatId) {
     $keyboard[] = [
         ['text' => '➕ افزودن سرور'], 
         ['text' => '❌ حذف سرور']
     ];
     $keyboard[] = [
      
         ['text' => '👤 ادمین'],
        
         ['text' => 'تعداد'],
         ['text' => '📋 لیست سرور']
     ];
}
     $replyMarkup = json_encode([
         'keyboard' => $keyboard,
         'resize_keyboard' => true,
         'one_time_keyboard' => false
     ]);
     file_get_contents($apiUrl . "/sendMessage?" . http_build_query([
         'chat_id' => $chatId,
         'text' => "به ربات خوش آمدید. یکی از گزینه‌های زیر را انتخاب کنید:",
         'reply_markup' => $replyMarkup
     ]));
     exit;
}
$idd = "✅برای خرید اشتراک ماهانه\nوارد ربات زیر بشید👇\n\n@Buy\\_ghazi\\_subscription\\_bot\n\nراه اندازی ربات /start";
$adminChatId = "586924831";
$chatId = $update['message']['chat']['id'];
$userName = $update['message']['chat']['first_name'] . ' ' . $update['message']['chat']['last_name'];
$file = "chat_id2.txt";
$existingChatIds = file_exists($file) ? file($file, FILE_IGNORE_NEW_LINES) : [];
if (!in_array($chatId, $existingChatIds)) {
    file_put_contents($file, $chatId . PHP_EOL, FILE_APPEND);
 $messageToAdmin = "چت‌آیدی جدید:\n\n"
         . "چت‌آیدی: $chatId\n"
         . "نام کاربر: $userName";

     $dataToAdmin = [
         'chat_id' => $adminChatId,
         'text' => $messageToAdmin,
         'parse_mode' => 'Markdown'
     ];
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, "$apiUrl/sendMessage");
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $dataToAdmin);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_exec($ch);
     curl_close($ch);
}
if ($text === '🛒 خرید اشتراک یک‌ماهه') {
     sendMessage($chatId, $idd); // استفاده از متغیر $idd
     exit;
}

if ($text === '⬇️ دانلود نرم افزار ⬇️') {
    $playStore = "https://play.google.com/store/apps/details?id=com.v2raytun.android";
    $androidDirect = "https://github.com/2dust/v2rayNG/releases/download/1.10.24/v2rayNG1.10.24universal.apk";
    $iosLink = "https://apps.apple.com/us/app/napsternetv/id1629465476";

    $message = "⬇️ *لینک‌های دانلود نرم افزار:* ⬇️\n\n"
             . "✅ *لینک فروشگاه پلی:*\n[$playStore]($playStore)\n\n"
             . "✅ *لینک مستقیم (اندروید):*\n[$androidDirect]($androidDirect)\n\n"
             . "✅ *نسخه آیفون (iOS):*\n[$iosLink]($iosLink)\n\n"
             . "برای راه‌اندازی ربات دستور زیر را بزنید:\n/start";

    sendMessage($chatId, $message, "Markdown");
    exit;
}


if ($text == "👤 ادمین" && $chatId == $adminChatId) {
    if (file_exists($logFile)) {
        $content = file_get_contents($logFile);
        $content = trim($content) . "\n\nراه اندازی ربات /start";
        sendMessage($chatId, $content);
    } else {
        sendMessage($chatId, "فایل zaman.txt یافت نشد.\n\nراه اندازی ربات /start");
    }
    exit;
}
if ($text == "تعداد" && $chatId == $adminChatId) {
    if (file_exists($tedadFile)) {
       $content = file_get_contents($tedadFile);
       $content = trim($content) . "\n\nراه اندازی ربات /start";
       sendMessage($chatId, $content);
     } else {
         sendMessage($chatId, "فایل tedad.txt یافت نشد.\n\nراه اندازی ربات /start");
     }
     exit;
}
if ($text == "حذف سرور" && $chatId == $adminChatId) {
    if (file_exists($filePath)) {
       file_put_contents($filePath, "");
         sendMessage($chatId, "تمام اطلاعات فایل server.txt با موفقیت پاک شد.");
     } else {
         sendMessage($chatId, "فایل server.txt یافت نشد.");
     }
     exit;
}
if ($text == "حذف زمان" && $chatId == $adminChatId) {
    if (file_exists($logFile)) {
       file_put_contents($logFile, "");
         sendMessage($chatId, "تمام اطلاعات فایل zaman.txt با موفقیت پاک شد.");
     } else {
         sendMessage($chatId, "فایل zaman.txt یافت نشد.");
     }
     exit;
}
if ($text == "حذف تعداد" && $chatId == $adminChatId) {
  if (file_exists($tedadFile)) {
       file_put_contents($tedadFile, "");
         sendMessage($chatId, "تمام اطلاعات فایل tedad.txt با موفقیت پاک شد.");
     } else {
         sendMessage($chatId, "فایل tedad.txt یافت نشد.");
     }
     exit;
}
if ($text == "📋 لیست سرور" && $chatId == $adminChatId) {
     if (file_exists($filePath)) {
         $servers = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
         if (!empty($servers)) {
            $serverList = "📋 لیست سرورها:\n";
             foreach ($servers as $index => $server) {
                 $server = preg_replace('/^\d+-/', '', $server);
                 $serverList .= ($index + 1) . ". $server\n\n";
             }
             $serverList = trim($serverList) . "\n\nراه اندازی ربات /start";
             sendMessage($chatId, $serverList);
         } else {
             sendMessage($chatId, "❌ هیچ سروری در فایل موجود نیست. 1 ساعت دیگه مجدد تلاش کنید\n\nراه اندازی ربات /start");
         }
     } else {
         sendMessage($chatId, "فایل سرورها یافت نشد.\n\nراه اندازی ربات /start");
     }
     exit;
}
if ($text == "❌ حذف سرور" && $chatId == $adminChatId) {
     // ثبت حالت حذف در فایل وضعیت
     file_put_contents($statusFile, json_encode(['chat_id' => $chatId, 'action' => 'delete']));
     sendMessage($chatId, "سروری که قصد حذف را دارید ارسال کنید:");
     exit;
}
// بررسی دکمه "🌟 سرور تست رایگان"
if ($text == "✅ سرور تست رایگان ✅") {
     // مسیر فایل‌ها
     $serverFile = 'server.txt';
     $logFile = 'zaman.txt';
    $tedadFile = 'tedad.txt';
     // زمان فعلی
     $currentDate = date('Y/m/d');
     $currentTime = date('H:i');
     $currentDateTime = strtotime("$currentDate $currentTime");

     // بررسی وجود فایل لاگ و چت آیدی در آن
     if (file_exists($logFile)) {
         $logs = file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

         // جستجوی چت آیدی در فایل لاگ
         foreach ($logs as $lineIndex => $line) {
             if (strpos($line, "-$chatId") !== false) {
                 $storedDate = $logs[$lineIndex + 1];
                 $storedTime = $logs[$lineIndex + 2];
                 $storedDateTime = strtotime("$storedDate $storedTime");

                 // چک کردن زمان فعلی با زمان ثبت‌شده
//*****************
$adminChatId = "586924831";

// فقط اگر کاربر ادمین نبود، بررسی زمان انجام شود
if ($chatId != $adminChatId && $currentDateTime < $storedDateTime) {
     $remainingSeconds = $storedDateTime - $currentDateTime;
     $remainingDays = floor($remainingSeconds / (60 * 60 * 24));
     $remainingHours = floor(($remainingSeconds % (60 * 60 * 24)) / (60 * 60));
     $remainingMinutes = floor(($remainingSeconds % 3600) / 60); // محاسبه دقیقه باقی‌مانده
     $message = "❌ شما قبلاً سرور تست را دریافت کردید.\n\n";
     $timeParts = [];
     if ($remainingDays > 0) {
         $timeParts[] = "$remainingDays روز";
     }
     if ($remainingHours > 0) {
         $timeParts[] = "$remainingHours ساعت";
     }
     if ($remainingMinutes > 0 && $remainingHours == 0) {
         $timeParts[] = "$remainingMinutes دقیقه";
     }
     if (!empty($timeParts)) {
        
        $message .= "تا " . implode(" و ", $timeParts) . " دیگر می‌توانید دوباره سرور را دریافت کنید.\n\nراه اندازی ربات /start";
     } else {
         $message .= "زمان شما برای دریافت سرور به پایان رسیده است.";
     }
     sendMessage($chatId, $message);
     exit;
}

 else {
                     // حذف ورود قبلی کاربر از فایل لاگ
                     array_splice($logs, $lineIndex, 3);
                     file_put_contents($logFile, implode("\n", $logs));
                     break;
                 }
             }
         }
     }
     // بررسی وجود فایل سرور
     if (file_exists($serverFile)) {
         // بارگذاری سرورها
         $servers = file($serverFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
         if (!empty($servers)) {
             // دریافت و حذف اولین سرور
             $firstServer = array_shift($servers);
             // به‌روزرسانی فایل سرور
             file_put_contents($serverFile, implode("\n", $servers));
//$firstServer = substr($firstServer, 2);
$firstServer = preg_replace('/^.*?(vless)/', 'vless', $firstServer);

// --- [شروع منطق تولید و ارسال بارکد] ---
$Qr_Link = $firstServer;
$file = RandomString() . ".png";
$ecc = 'L';
$pixel_Size = 16;
$frame_Size = 1;

// تولید فایل بارکد
QRcode::png($Qr_Link, $file, $ecc, $pixel_Size, $frame_Size);
// افزودن حاشیه سفید به تصویر
addBorderImage($file);
$qr_url = $botUrlForQr . $file;
// --- [پایان منطق تولید بارکد] ---


sendMessage($chatId, "1⃣ سرور رو کپی کنید
2⃣ برید داخل v2ray
3⃣ از قسمت بالا گزینه + رو بزنید
4⃣ بعد گزینه دوم رو انتخاب کنید
5⃣ یه سرور به لیست اضافه میشه
6⃣ اون سرور جدید رو انتخاب کنید
7⃣ (دایره پایین صفحه) رو بزنید تا متصل بشید

✅ سرور تست یک روزه
روی سرور یکبار بزنید کپی میشه 👇

`$firstServer`\n\nراه اندازی ربات /start");

// --- [ارسال عکس بارکد] ---
SendPhoto($chatId, $qr_url);
// --- [حذف فایل بارکد] ---
@unlink($file);


function removeChatIdFromFile($filePath, $chatIdToRemove) {
     // بررسی وجود فایل
     if (!file_exists($filePath)) {
         return false; // فایل وجود ندارد
     }
 $fileContents = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 $updatedContents = array_filter($fileContents, function ($line) use ($chatIdToRemove) {
         return trim($line) !== (string)$chatIdToRemove;
     });
 file_put_contents($filePath, implode(PHP_EOL, $updatedContents));
     return true;
}
if ($chatId) {
     // حذف چت‌آیدی از فایل اول
     removeChatIdFromFile($logFilePath, $chatId);
     // حذف چت‌آیدی از فایل دوم
     removeChatIdFromFile($logFilePath2, $chatId);
}
function updateTedad($chatId) {
     $tedadFile = 'tedad.txt';

     // اگر فایل وجود داشته باشد، محتوای آن را بخوانیم
     if (file_exists($tedadFile)) {
         $lines = file($tedadFile, FILE_IGNORE_NEW_LINES);
     } else {
         $lines = [];
     }
     $found = false;
     // بررسی اینکه آیا چت آیدی در فایل موجود است
     foreach ($lines as &$line) {
         list($id, $count) = explode(":", $line);
        
         // اگر چت آیدی پیدا شد، مقدارش را افزایش می‌دهیم
         if ($id == $chatId) {
             $found = true;
             $newCount = $count + 1;
             $line = "$chatId:$newCount"; // به‌روزرسانی مقدار
             break;
         }
     }
     // اگر چت آیدی پیدا نشد، یک خط جدید اضافه می‌کنیم
     if (!$found) {
         $lines[] = "$chatId:1";
     }
     // ذخیره‌سازی داده‌ها در فایل به صورت جداگانه برای هر کاربر
     file_put_contents($tedadFile, implode("\n", $lines) . "\n");
     // ارسال پیام با شمارش جدید
}
updateTedad($chatId);
$newDate = date('Y/m/d', strtotime("+$rooz days"));
$newTime = $currentTime;
$logs = file_exists($logFile) ? file($logFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : [];
$logs = array_filter($logs, function($line) {
     return trim($line) !== "";
});
$logIndex = count($logs) / 3 + 1; // تعداد خطوط تقسیم بر 3 (چون هر ورودی 3 خط دارد)
$logEntry = "$logIndex-$chatId\n$newDate\n$newTime\n";
$logs[] = $logEntry; // اضافه کردن ورودی به آرایه
file_put_contents($logFile, implode("\n", $logs) . "\n"); 
         } else {
             sendMessage($chatId, "❌متأسفیم، در حال حاضر هیچ سروری برای تست رایگان موجود نیست.\nیکساعت بعد دوباره تلاش کنید");
         }
     } else {
         sendMessage($chatId, "فایل سرورها یافت نشد. لطفاً با پشتیبانی تماس بگیرید.");
     }
     exit;
}
//******************************************************************************
if ($text == "➕ افزودن سرور" && $chatId == $adminChatId) {
     file_put_contents($statusFile, json_encode(['chat_id' => $chatId, 'action' => 'add']));
     sendMessage($chatId, "لطفاً سرورهای جدید را ارسال کنید.");
     exit;
}
if ($chatId == $adminChatId && file_exists($statusFile)) {
     $status = json_decode(file_get_contents($statusFile), true);
     if ($status['action'] == 'add') {
         if (strpos($text, "vless://") !== false) {
             preg_match_all('/(vless:\/\/.*?@.*?#)/', $text, $matches);
             if (!empty($matches[1])) {
                 $lines = file_exists($filePath) ? file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : [];
                 $currentIndex = count($lines);

                 foreach ($matches[1] as $server) {
                     $currentIndex++;
                     $server .= "test-ghazi"; // افزودن test-ghazi به انتهای کانفیگ
                     $lines[] = "$currentIndex-$server";
                 }
            file_put_contents($filePath, implode("\n", $lines) . "\n");
                 sendMessage($chatId, "سرورهای جدید با موفقیت اضافه شدند.");
       $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
      $processedLines = [];
                 foreach ($lines as $line) {
                     $processedLines[] = preg_replace('/^\d+-/', '', $line);
                 }
      $uniqueLines = array_unique($processedLines);
    $newLines = [];
                 foreach ($uniqueLines as $index => $line) {
                     $newLines[] = ($index + 1) . '-' . $line;
                 }
      file_put_contents($filePath, implode("\n", $newLines) . "\n");
             } else {
                 sendMessage($chatId, "هیچ سرور معتبری در متن ارسالی یافت نشد.");
             }
         } else {
             sendMessage($chatId, "لطفاً یک متن حاوی سرور معتبر ارسال کنید.");
         }
    unlink($statusFile);
         exit;
     }
}
if ($chatId == $adminChatId && file_exists($statusFile)) {
     $status = json_decode(file_get_contents($statusFile), true);
     if ($status['action'] == 'delete') {
         // استخراج کد بین "//" و "@"
         preg_match('/\/\/(.*?)@/', $text, $matches);
         $serverCode = $matches[1] ?? null;
         if (!$serverCode) {
             sendMessage($chatId, "کد سرور معتبر پیدا نشد.");
             exit;
         }
         if (file_exists($filePath)) {
             $lines = file($filePath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
             $newLines = [];
             $found = false;
 foreach ($lines as $line) {
                 if (strpos($line, $serverCode) === false) {
                     $newLines[] = $line;
                 } else {
                     $found = true;
                 }
             }
             if ($found) {
                 file_put_contents($filePath, implode("\n", $newLines) . "\n");
                 sendMessage($chatId, "سرور با کد [$serverCode] با موفقیت حذف شد.");
             } else {
                 sendMessage($chatId, "سرور موردنظر یافت نشد.");
             }
         } else {
             sendMessage($chatId, "فایل سرورها وجود ندارد.");
         }
    unlink($statusFile);
         exit;
     }
}
?>