 <?php   
$botToken = "7928431608:AAH7DP4X-DUvA_ZaMKEuV-WYLPDVt_ChP_o";
$apiURL = "https://api.telegram.org/bot$botToken/";




//        7928431608:AAH7DP4X-DUvA_ZaMKEuV-WYLPDVt_ChP_o
//        /factor
//        تنظیمات کارخانه 9249
//        book_debt_bot
//        book_debt_bot



$content = file_get_contents("php://input");
$update = json_decode($content, TRUE);

if (isset($update["message"])) {
    $chatId = $update["message"]["chat"]["id"];
    $message = $update["message"]["text"];


require __DIR__ . '/jDateTime.php';

$dataFile = __DIR__ . "/customer_data_$chatId.json";
$uploadPath = __DIR__ . "/customer_data_$chatId.json";
$messagesFile = __DIR__ . "/messages_$chatId.json";

$jsonFilePath = __DIR__ . "/customer_data_$chatId.json";
$chatIdFile = __DIR__ . "/chat_id.txt";




       //  require $_SERVER['DOCUMENT_ROOT'] . '/jDateTime.php';
     //$dataFile = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";
  // $uploadPath = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";
 //$messagesFile = $_SERVER['DOCUMENT_ROOT'] . "/messages_$chatId.json";
 
//$jsonFilePath = __DIR__ . "/customer_data_$chatId.json";
//$chatIdFile = __DIR__ . "/chat_id.txt";
//**************************


  // بررسی وجود فایل و خواندن محتوا
    $existingChatIds = [];
    if (file_exists($chatIdFile)) {
        $existingChatIds = file($chatIdFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    }

    // افزودن شناسه کاربر به فایل در صورت عدم وجود
    if (!in_array($chatId, $existingChatIds)) {
        file_put_contents($chatIdFile, $chatId . PHP_EOL, FILE_APPEND | LOCK_EX);
    }
//*****************************************

    
if ($message === '/date') {
  // دریافت اطلاعات تاریخ به صورت سفارشی
    $dayOfWeek = jDateTime::date('l', time()); // روز هفته
    $day = jDateTime::date('j', time()); // روز ماه
    $month = jDateTime::date('F', time()); // نام ماه
    $year = jDateTime::date('Y', time()); // سال

    // ساخت رشته تاریخ نهایی
    $formattedDate = "$dayOfWeek $day $month $year";

    // ارسال تاریخ به کاربر
    file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . 
        urlencode($formattedDate));
    exit;
}

//*****************************************
  function replaceAlefWithAlefSimple($message) {
       
     
      return str_replace(["آ", "×", "÷"], ["ا", "*", "/"], $message);

    }

    // تبدیل متن پیام و ذخیره در همان متغیر $message
    $message = replaceAlefWithAlefSimple($message);

    // ارسال پاسخ به کاربر
    $response = [
        'chat_id' => $chatId,
        'text' => $message
    ];
    //*****************************
function convertPersianNumbersToEnglish($message) {
        $persianNumbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
        $englishNumbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
        
        return str_replace($persianNumbers, $englishNumbers, $message);
    }
    
  $message = convertPersianNumbersToEnglish($message);


$message = str_replace(["‌", "\u{200C}", "\u{200B}"], '', $message);

    // ارسال پاسخ به کاربر
    $response = [
        'chat_id' => $chatId,
        'text' => $message
    ];


//****************************


if (preg_match('/^\d+/', $message, $matches) && strpos($message, "=") !== false) {
    // ذخیره شماره (عدد ابتدایی پیام)
    $shomare = $matches[0];

    // حذف عدد ابتدایی و پردازش متن باقی‌مانده
    $remaining = trim(substr($message, strlen($shomare)));
    $parts = explode('=', $remaining);

    if (count($parts) >= 2) {
        $beforeEqual = trim($parts[0]);
        $afterEqual = trim($parts[1]);

        // پردازش قبل از "="
        $moshtari = preg_replace('/\s+/', '-', $beforeEqual); // فاصله‌ها را به "-" تبدیل می‌کنیم
if (preg_match('/^(.*?)([\d.+\-*\/\s]+)?$/', $afterEqual, $matches)) {
    $tozihat = !empty($matches[1]) ? trim($matches[1]) : 'ب.د.و.ن.توضیح'; // توضیحات
    $mathExpression = isset($matches[2]) ? trim($matches[2]) : ''; // عملیات ریاضی
}


        // محاسبه عملیات ریاضی فقط اگر موجود باشد
       $pool = null; // مقدار پیش‌فرض

        if (!empty($mathExpression)) {
            try {
                $pool = eval("return $mathExpression;");
                // قالب‌بندی مقدار pool
                $pool = rtrim(rtrim(number_format($pool, 2, '.', ''), '0'), '.');
            } catch (Throwable $e) {
                $pool = '❌ خطا در محاسبات';
            }
        }

    } else {
  
    }
}

//****************************

// بررسی وجود فایل JSON و خواندن محتوا

if (preg_match('/^\d+/', $message, $matches) && strpos($message, "=") !== false)
{
   
// بارگیری محتوای فایل JSON
if (file_exists($dataFile)) {
    $jsonData = file_get_contents($dataFile);
    $data = json_decode($jsonData, true);


// اگر اسم مشتری با شکل اشتباه در فایل ذخیره شده بود، درستش کن
$cleanMoshtari = preg_replace('/[^ا-ی\s]/u', '', $moshtari); // فقط حروف فارسی و فاصله
$cleanMoshtari = preg_replace('/\s+/', '-', trim($cleanMoshtari));

if ($moshtari !== $cleanMoshtari && isset($data[$moshtari])) {
    $data[$cleanMoshtari] = $data[$moshtari];
    unset($data[$moshtari]);
    $moshtari = $cleanMoshtari; // از این به بعد با اسم درست کار کن
    file_put_contents($dataFile, json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
}


    // بررسی اینکه مشتری با نام $moshtari وجود دارد
    if (isset($data[$moshtari]) && is_array($data[$moshtari])) {
        // بررسی اینکه شماره $shomare معتبر است
        if (isset($data[$moshtari][$shomare - 1])) {
            // پیدا کردن تکرار مشتری بر اساس شماره $shomare
            $customerData = $data[$moshtari][$shomare - 1];

       // تشخیص و بروزرسانی تاریخ، توضیحات یا مبلغ
if (preg_match('#^\d{4}/\d{2}/\d{2}$#', trim($afterEqual))) {
    // فقط تاریخ فرستاده شده (مثل 1403/12/08)
    $newDate = str_replace('/', '-', trim($afterEqual));
    $customerData['date'] = $newDate;
} else {
    // توضیحات یا مبلغ یا هر دو
    if (preg_match('/^(.*?)([\d.+\-*\/\s]+)?$/', $afterEqual, $matches)) {
        $tozihat = !empty($matches[1]) ? trim($matches[1]) : 'ب.د.و.ن.توضیح';
        $mathExpression = isset($matches[2]) ? trim($matches[2]) : '';
    }
    
    $customerData['description'] = ($tozihat !== 'ب.د.و.ن.توضیح') ? $tozihat : $customerData['description'];
    
    if (!empty($mathExpression)) {
        try {
            $pool = eval("return $mathExpression;");
            $pool = rtrim(rtrim(number_format($pool, 2, '.', ''), '0'), '.');
            $customerData['amount'] = $pool;
        } catch (Throwable $e) {
            // خطا نادیده گرفته بشه
        }
    }
}

            $data[$moshtari][$shomare - 1] = $customerData;
            file_put_contents($dataFile, json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));


            // ارسال پیام تایید
           
           
       //    $moshtari2=$moshtari;
   //  $moshtari2 = str_replace("-", "_", $moshtari2);
           
           $moshtari = "<a href='http://t.me/book_debt_bot'>$moshtari</a>";
            $shomare = "<a href='http://t.me/book_debt_bot'>$shomare</a>";



            
    $message = "✅ اطلاعات مشتری $moshtari با شماره $shomare بروزرسانی شد.";
    sendMessage($chatId, $message);

        exit;
            
        } else {
            // اگر شماره $shomare معتبر نیست
            
        
    $message = "❌ شماره بدهی در لیست موجود نیست.";
    sendMessage($chatId, $message);

            
            
       exit;
        }
    } else {
        
        
      // $moshtari2=$moshtari;
    // $moshtari2 = str_replace("-", "_", $moshtari2);
        
        $moshtari = "<a href='http://t.me/book_debt_bot'>$moshtari</a>";
 
        
        
        // اگر مشتری با نام $moshtari پیدا نشد
          $message = "❌ مشتری $moshtari پیدا نشد.";
    sendMessage($chatId, $message);
    exit;
        
    }
} else {
    // اگر فایل JSON پیدا نشد
    $message = "❌ خطا: فایل داده‌های مشتری پیدا نشد.";
    sendMessage($chatId, $message);;

    exit;
}

}

//****************************
$message = preg_replace('/^\s+/m', '', $message); // فاصله‌های اضافی را در ابتدای هر خط حذف می‌کند
//****************************

 $lines = explode("\n", $message); 

    // الگوی تاریخ به فرمت yyyy/mm/dd
    $datePattern = '/^\d{4}\/\d{2}\/\d{2}$/'; 

    $validDates = [];
    $nonDateLines = [];

    // بررسی هر خط
    foreach ($lines as $line) {
        $trimmedLine = trim($line); // حذف فاصله‌های اضافی
        if (preg_match($datePattern, $trimmedLine)) {
            $validDates[] = $trimmedLine; // اضافه کردن تاریخ‌های معتبر
        } else {
            $nonDateLines[] = $trimmedLine; // خطوط غیرتاریخی
        }
    }

    // ترکیب تاریخ‌ها و سایر متن‌ها
    if (count($validDates) == 2) {
        $message = implode(":", $validDates); // اتصال تاریخ‌ها با ":"
        if (!empty($nonDateLines)) {
            $message .= ":" . implode(" ", $nonDateLines); // اضافه کردن سایر متن‌ها
        }
    }

    // اکنون پیام تغییر یافته را می‌توان ارسال کرد
   // $response = file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . urlencode($message));





//****************************
if (strpos($message, "@") === 0) {
    $textWithoutStar = substr($message, 1); // حذف "$" از ابتدای متن
    if (strpos($textWithoutStar, ":") !== false) {
        // حالت وجود علامت "."
        $tedadi = substr($textWithoutStar, 0, strpos($textWithoutStar, ":") + 1); // گرفتن متن تا بعد از "."
    } else {
        $tedadi = strtok($textWithoutStar, " "); // فقط اولین کلمه یا عبارت تا اولین فاصله
    }

    // ایجاد آرایه خطوط
    $lines = explode("\n", $textWithoutStar);
    $result = [];
    foreach ($lines as $index => $line) {
        if ($index == 0) {
            $result[] = trim($line); // اولین خط بدون تغییر
        } else {
            $result[] = trim($tedadi . " " . $line); // خطوط بعدی با اضافه کردن $tedadi
        }
    }

    // آماده‌سازی متن خروجی
    $message = implode("\n", $result); // ذخیره در همان متغیر $message
}

//*********************************************




if ($message === '/restart') {
    // بررسی وجود فایل JSON
    if (file_exists($dataFile)) {
        $jsonData = file_get_contents($dataFile);
        $data = json_decode($jsonData, true);

        // بررسی اینکه فایل JSON معتبر است و کلید دکمه‌ها وجود دارد
        if ($data && isset($data['buttons']) && is_array($data['buttons'])) {
            $buttons = $data['buttons'];

            // ایجاد آرایه برای دکمه‌ها
            $keyboard = [];
            $row = [];
            foreach ($buttons as $index => $button) {
                $row[] = ['text' => $button];
                // هر دو دکمه در کنار هم، سپس به ردیف بعدی بروید
                if (($index + 1) % 2 == 0) {
                    $keyboard[] = $row;
                    $row = [];
                }
            }
            // اضافه کردن آخرین ردیف اگر دکمه‌های باقی‌مانده وجود دارد
            if (!empty($row)) {
                $keyboard[] = $row;
            }

            // حذف تمامی دکمه‌های فعلی
            file_get_contents($apiURL . "sendMessage", false, stream_context_create([
                'http' => [
                    'method' => 'POST',
                    'header' => "Content-Type: application/json\r\n",
                    'content' => json_encode([
                        'chat_id' => $chatId,
                      //  'text' => "🔄 دکمه‌ها بروزرسانی شدند.",
                        'reply_markup' => json_encode(['remove_keyboard' => true]),
                    ]),
                ],
            ]));

            // ارسال دکمه‌های جدید
            file_get_contents($apiURL . "sendMessage", false, stream_context_create([
                'http' => [
                    'method' => 'POST',
                    'header' => "Content-Type: application/json\r\n",
                    'content' => json_encode([
                        'chat_id' => $chatId,
                        'text' => "✅ دکمه‌ ها بروزرسانی شدند.",
                        'reply_markup' => json_encode(['keyboard' => $keyboard, 'resize_keyboard' => true]),
                    ]),
                ],
            ]));
        } else {
            // اگر فایل JSON یا دکمه‌ها معتبر نیستند
            file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . 
                urlencode("❌ خطا: دکمه‌ها یافت نشدند."));
        }
    } else {
        // اگر فایل JSON وجود ندارد
        file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . 
            urlencode("❌ خطا: فایل داده‌ها یافت نشد."));
    }
    exit;
}





//**********************************
if ($message === 'گزارشات کلی') {
 //if (strpos($message, 'گزارشات کلی') !== false) {
        // بررسی وجود فایل JSON
        if (file_exists($dataFile)) {
            $jsonData = file_get_contents($dataFile);
            $customerData = json_decode($jsonData, true);

            if ($customerData && is_array($customerData)) {
                $totalAmount = 0;
                
                
$gozar=" گزارشات کلی مشتریان:";
                         $gozar = "<a href='http://t.me/book_debt_bot'>$gozar</a>";
       
                $messageOutput = "📊$gozar\nـ➖➖➖➖➖➖➖\n";





                // پردازش تمامی مشتریان و محاسبه جمع تراکنش‌ها
                foreach ($customerData as $customerName => $transactions) {
                    // اطمینان از اینکه نام مشتری شامل حروف و اعداد است و دکمه‌ها یا ورودی‌های نامعتبر نیست
                    if (!preg_match('/^[a-zA-Zا-ی]+[\w\s-]*$/u', $customerName)) {
                        continue;
                    }

                    $customerTotal = 0;
                    foreach ($transactions as $transaction) {
                       $amount = isset($transaction['amount']) ? $transaction['amount'] : 0;

                        $customerTotal += $amount;
                    }



 $customerName2 = $customerName;
$customerName2 = str_replace("-", "_", $customerName2);

$messageOutput .= "#$customerName2: " . 
    rtrim(rtrim(number_format($customerTotal, 2, '.', ','), '0'), '.') 
    . " تومان";

// بررسی منفی بودن مقدار customerTotal
if ($customerTotal < 0) {
    $messageOutput .= " <a href='http://t.me/book_debt_bot'>بستانکار</a>";
}


$messageOutput .= "\n";

$totalAmount += $customerTotal;




                }

              $messageOutput .= "\n🔸 جمع کل: " . rtrim(rtrim(number_format($totalAmount, 2, '.', ','), '0'), '.') . " تومان\n\nراهنما   👈  /start";




                // حذف خطوطی که شامل "#buttons" هستند
                $messageOutput = preg_replace('/#buttons:.*\n?/u', '', $messageOutput);

                // تبدیل تمام "-" به "_"
              //  $messageOutput = str_replace('-', '_', $messageOutput);

                // ارسال گزارش کلی به کاربر
             if (mb_strlen($messageOutput) > 2000) {
    $chunks = [];
    $currentChunk = "";

    foreach (explode("\n", $messageOutput) as $line) {
        // بررسی اگر اضافه کردن خط باعث تجاوز از 2000 کاراکتر شود
        if (mb_strlen($currentChunk . "\n" . $line) > 2000) {
            $chunks[] = $currentChunk;
            $currentChunk = $line; // شروع یک بخش جدید
        } else {
            $currentChunk .= ($currentChunk === "" ? "" : "\n") . $line; // افزودن به بخش فعلی
        }
    }

    // افزودن آخرین بخش
    if ($currentChunk !== "") {
        $chunks[] = $currentChunk;
    }

    // ارسال هر بخش جداگانه
    foreach ($chunks as $chunk) {
        sendMessage($chatId, $chunk); // ارسال هر بخش به جای کل پیام
        usleep(250000); // مکث 250 میلی‌ثانیه
    }
} else {
    sendMessage($chatId, $messageOutput);
}


            } else {
            sendMessage($chatId, "❌ در حال حاضر هیچ مشتری ثبت نیس");

            }
        } else {
        sendMessage($chatId, "❌ فایل اطلاعات مشتری یافت نشد .");

        }

        exit;
    }
//***********************************************





     // ابتدا پیام را به خطوط تقسیم می‌کنیم
$lines = explode("\n", $message);

// سپس برای هر خط بررسی می‌کنیم که تعداد ":" برابر با 3 باشد
foreach ($lines as $line) {
    if (substr_count($line, ":") != 2) {
        // اگر تعداد ":" برابر با 3 نباشد، از ادامه اجرای کد عبور می‌کنیم
        goto skip4;
    }
}
    // بررسی وجود کلمه "جمع" در پیام
    if (strpos($message, 'جمع') !== false) {
        $saaaj = "جمع";
    } else {
        $saaaj = "";
    }

    // حذف کلمات "جمع" و "لیست" از پیام
    $message = str_replace(['جمع', 'لیست'], '', $message);
    // حذف فاصله‌های اضافی ابتدا و انتهای پیام
    $message = trim($message);

    echo "متغیر \$saaaj: " . $saaaj . "<br>";
    echo "پیام اصلاح شده: " . $message . "<br>";

    preg_match_all('/\d{4}\/\d{2}\/\d{2}/', $message, $dates);

    if (count($dates[0]) === 2) {
        $date1 = $dates[0][0];
        $date2 = $dates[0][1];

        if (strcmp($date1, $date2) < 0) {
            $tarikh1 = $date1;
            $tarikh2 = $date2;
        } else {
            $tarikh1 = $date2;
            $tarikh2 = $date1;
        }

        // حذف اعداد و علائم ":" و "/" از پیام برای استخراج نام
        $namePart = preg_replace('/[0-9\/:]/', '', $message);
        // حذف فاصله‌های اضافی و جایگزینی آنها با "-"
        $nammm = preg_replace('/\s+/', '-', trim($namePart));

        // ارسال نتایج تاریخ و نام
        //$outputMessage = "تاریخ کوچکتر: $tarikh1\nتاریخ بزرگتر: $tarikh2\nنام: $nammm";
        file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . urlencode($outputMessage));
    } else {
        file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . urlencode("تعداد تاریخ‌های موجود در پیام صحیح نیست."));
    }

    // مسیر فایل JSON مربوط به مشتری
    

    // بررسی وجود فایل JSON
    if (file_exists($jsonFilePath)) {
        $jsonData = file_get_contents($jsonFilePath);
        $customerData = json_decode($jsonData, true);

        if ($customerData && is_array($customerData)) {
            // در صورتی که متغیر $saaaj برابر با "جمع" باشد، مجموع محاسبه می‌شود
          
          //********************************************
            if ($saaaj == "جمع") {
                // بررسی اینکه آیا نام مشتری در داده‌ها وجود دارد
                if (isset($customerData[$nammm])) {
                    $transactions = $customerData[$nammm];

                    // تبدیل تاریخ‌ها به timestamp
                    $startDate = strtotime($tarikh1);
                    $endDate = strtotime($tarikh2);

                    $totalAmount = 0;
                    $found = false;

                    // پردازش تراکنش‌ها
                    foreach ($transactions as $transaction) {
                        $transactionDate = strtotime($transaction['date']);
                        
                        if ($transactionDate >= $startDate && $transactionDate <= $endDate) {
                            // جمع کردن مبلغ
                           $amount = isset($transaction['amount']) ? $transaction['amount'] : 0;

                            $totalAmount += $amount;
                            $found = true;
                        }
                    }

                    // ارسال نتیجه
                    if ($found) {
                        
  //                        $nammm2=$nammm;
//$nammm2 = str_replace("-", "_", $nammm2);

                                            // بررسی اینکه آیا مقدار totalAmount منفی است
                                            
        // قالب‌بندی متغیر nammm به صورت لینک
$nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";

if ($totalAmount < 0) {
    // قالب‌بندی مقدار عددی
    $formattedAmount = rtrim(rtrim(number_format($totalAmount, 2, '.', ','), '0'), '.');

    // قالب‌بندی لینک برای "بستانکار"
    $creditorLink = "<a href='http://t.me/book_debt_bot'>بستانکار</a>";

    // ساخت پیام
 
 
 $tarikh1 = "<a href='http://t.me/book_debt_bot'>$tarikh1</a>";
     $tarikh2 = "<a href='http://t.me/book_debt_bot'>$tarikh2</a>";


 
    $message = "👤 مجموع بدهی برای $nammm در بازه تاریخی\n $tarikh1 تا $tarikh2\nـ➖➖➖➖➖➖➖\nبرابر است با: "
        . $formattedAmount . " تومان $creditorLink\n\nراهنما👈 /start";
} else {
    $formattedAmount = rtrim(rtrim(number_format($totalAmount, 2, '.', ','), '0'), '.');
    
    
     $tarikh1 = "<a href='http://t.me/book_debt_bot'>$tarikh1</a>";
     $tarikh2 = "<a href='http://t.me/book_debt_bot'>$tarikh2</a>";

    
    $message = "👤مجموع بدهی برای $nammm در بازه تاریخی\n $tarikh1 تا $tarikh2\nـ➖➖➖➖➖➖➖\nبرابر است با: " . $formattedAmount . " تومان\n\nراهنما👈 /start";
}


sendMessage($chatId, $message);


                        exit;
                    } else {
                        
                       
 $nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";



                       
    $message = "❌ هیچ تراکنشی برای $nammm در بازه تاریخی مشخص شده یافت نشد.";
    sendMessage($chatId, $message);

                 
                    exit;
                        
                    }
                } else {
                    
  

                $nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";


                  $message = "❌ مشتری $nammm در لیست موجود نیست.";
    sendMessage($chatId, $message);
               exit;
                }
            } else {
                //**************************************************************
                // اگر متغیر $saaaj خالی است (یعنی "جمع" نبوده)، لیست تراکنش‌ها ارسال می‌شود
              
            
               if (isset($customerData[$nammm])) {
    $transactions = $customerData[$nammm];
    $transactionsList = "";
    $totalAmount = 0; // اضافه کردن متغیر برای مجموع مبلغ
    $found = false;
    $count = 1;

    // تبدیل تاریخ‌ها به timestamp
    $startDate = strtotime($tarikh1);
    $endDate = strtotime($tarikh2);

    foreach ($transactions as $transaction) {
    $transactionDate = strtotime($transaction['date']);

    if ($transactionDate >= $startDate && $transactionDate <= $endDate) {
        $amount = isset($transaction['amount']) ? $transaction['amount'] : 0;

        $description = $transaction['description'] ?? "بدون موضوع";
        $date = $transaction['date'] ?? "نامشخص";

        // بررسی منفی بودن مبلغ
        $amountText = number_format($amount, 2, '.', ','); // نمایش مبلغ با دو رقم اعشار

        // حذف صفرهای اضافی بعد از ممیز
        $amountText = rtrim(rtrim($amountText, '0'), '.'); // حذف صفرهای اضافی و نقطه

        $dadgiText = ""; // متغیر جداگانه برای "دادگی"

       if ($amount < 0) {
    // حذف "تومان" در صورت وجود مبلغ منفی
    $amountText = rtrim(number_format(abs($amount), 2, '.', ','), '0'); // حذف صفرهای اضافی
    $amountText = rtrim($amountText, '.'); // حذف نقطه اضافی در صورت وجود

    $dadgiText = "<a href='http://t.me/book_debt_bot?amount=" . urlencode("دادگی") . "'>دادگی</a>";
} else {
            $amountText .= " تومان"; // اضافه کردن "تومان" فقط برای مبالغ مثبت
        }

// فرض بر این است که $date در فرمت "1403-08-12" ذخیره شده
$tariii = "<a href='http://t.me/book_debt_bot'>تاریخ: </a>";  // متن "تاریخ:" را داخل لینک قرار دادیم

// تقسیم تاریخ شمسی به سال، ماه و روز
list($year, $month, $day) = explode('-', $date);

// تبدیل تاریخ شمسی به میلادی
$gregorianDate = jDateTime::toGregorian($year, $month, $day); // تبدیل تاریخ شمسی به میلادی
list($gregorianYear, $gregorianMonth, $gregorianDay) = $gregorianDate;

// تبدیل تاریخ میلادی به فرمت شمسی دلخواه
$dayOfWeek = jDateTime::date('l', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // روز هفته
$dayOfMonth = jDateTime::date('j', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // روز ماه
$monthName = jDateTime::date('F', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // نام ماه
$yearFull = jDateTime::date('Y', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // سال

// ساخت تاریخ فرمت‌شده
$formattedDate = "$dayOfWeek $dayOfMonth $monthName $yearFull";

// قرار دادن تاریخ فرمت‌شده بدون لینک
$tariii .= $formattedDate;

$transactionsList .= "$count- $description : $amountText $dadgiText\n$tariii\n\n";
$totalAmount += $amount; // جمع کردن مبلغ تراکنش
$found = true;
$count++;

    
        
    
    }
}


    if ($found) {
    
$nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";
 $tarikh1 = "<a href='http://t.me/book_debt_bot'>$tarikh1</a>";
     $tarikh2 = "<a href='http://t.me/book_debt_bot'>$tarikh2</a>";
        $message = "👤 لیست بدهی $nammm در بازه تاریخی\n$tarikh1 تا $tarikh2\nـ➖➖➖➖➖➖➖\n";
        $message .= $transactionsList;


  if ($totalAmount < 0) {

    $creditorLink = "<a href='http://t.me/book_debt_bot'>بستانکار</a>";
  $message .= "ـ➖➖➖➖➖➖➖\n📘 مجموع بدهی: " 
        . rtrim(rtrim(number_format($totalAmount, 2), '0'), '.') 
        . " تومان $creditorLink\n\nراهنما👈 /start";
} else {
    $message .= "ـ➖➖➖➖➖➖➖\n📘 مجموع بدهی: " . rtrim(rtrim(number_format($totalAmount, 2), '0'), '.') . " تومان\n\nراهنما👈 /start";
}
sendMessage($chatId, $message);

        exit;
    } else {
        $nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";
        sendMessage($chatId, "❌ هیچ تراکنشی برای $nammm در بازه تاریخی مشخص شده یافت نشد.");
        exit;
    }
}
else {
 $nammm = "<a href='http://t.me/book_debt_bot'>$nammm</a>";
 $message = "❌ مشتری $nammm در لیست موجود نیست.";
    sendMessage($chatId, $message);

               exit;
                }
            }
       } else {
            sendMessage($chatId, "❌ در حال حاضر هیچ مشتری ثبت نیس");
      exit;
        }
    } else {
        sendMessage($chatId, "❌ فایل اطلاعات مشتری یافت نشد");
exit;
    }



skip4:

//**************************************************
  $message = preg_replace('/\n\s*\n/', "\n", $message); // حذف سطرهای خالی متوالی

  

     if (strpos($message, "جمع") === 0) { // اگر پیام با "جمع" شروع شود
        $message = trim(substr($message, strlen("جمع"))); // "جمع" را حذف می‌کنیم
        $message = preg_replace('/\s+/', '-', $message); // فاصله‌ها را با "-" جایگزین می‌کنیم
        $message = "جمع " . $message; // افزودن "جمع " به ابتدای پیام
    
    
        //  file_get_contents($apiURL . "sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message));
      }
    


//****************************************************

 //$message = preg_replace('/\n\s*\n/', "\n", $message); // حذف سطرهای خالی متوالی

  

     if (strpos($message, "لیست") === 0) { // اگر پیام با "لیست" شروع شود
        $message = trim(substr($message, strlen("لیست"))); // "لیست" را حذف می‌کنیم
        $message = preg_replace('/\s+/', '-', $message); // فاصله‌ها را با "-" جایگزین می‌کنیم
        $message = "لیست " . $message; // افزودن "لیست " به ابتدای پیام
    
    
        //  file_get_contents($apiURL . "sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message));
      }
    
//******************************************************************

     
     
     
if (strpos($message, "حذف") !== false && strpos($message, "=") === false) { 
    // جدا کردن بخش بعد از "حذف"
    $parts = explode("حذف", $message, 2); // قسمت بعد از "حذف" را جدا می‌کنیم
    if (isset($parts[1])) {
        // فقط فاصله‌های بعد از "حذف" را تبدیل به "-" می‌کنیم
        $message = $parts[0] . "حذف" . preg_replace("/\s+/", "-", $parts[1]);
        // در نهایت "-" بعد از "حذف" را به فاصله تبدیل می‌کنیم
        $message = preg_replace('/حذف-/', 'حذف ', $message);
    }
}



// تقسیم پیام به خطوط مختلف
$lines = explode("\n", $message);

// پردازش هر خط به صورت جداگانه
foreach ($lines as &$line) {
    // بررسی وجود کلمه "."
    if (strpos($line, ':') !== false) {
        // تقسیم هر خط به بخش‌های مختلف
        $parts = explode(':', $line);

        // حذف فضاهای اضافی از قسمت اول و تبدیل فاصله‌های متوالی به یک "-"
        $firstPart = preg_replace('/\s+/', '-', trim($parts[0]));

        // بازگشت پیام اصلاح شده برای هر خط و نگه داشتن فاصله بعد از نقطه
        $line = $firstPart . " " . trim($parts[1]);
    }
}

// تبدیل خطوط به یک پیام واحد (با جدا کننده خط جدید)
$message = implode("\n", $lines);


// ارسال پیام اصلاح شده به کاربر
//file_get_contents($apiURL . "sendMessage?chat_id=$chatId&text=" . urlencode($message));




 //$dataFile = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";


$dataFile = __DIR__ . "/customer_data_$chatId.json";




if (strpos($message, '=') !== false) {
    // تقسیم پیام به دو بخش قبل و بعد از "="
    list($oldName, $newName) = explode('=', $message, 2);
    
    // حذف فاصله‌های اضافی قبل و بعد از "=" و تبدیل فاصله‌های متوالی به یک "-"
    $oldName = preg_replace('/\s+/', '-', trim($oldName)); // تبدیل فاصله‌های متوالی قبل از "=" به یک "-"
    $newName = preg_replace('/\s+/', '-', trim($newName)); // تبدیل فاصله‌های متوالی بعد از "=" به یک "-"
    
    // ادامه پردازش‌ها و ذخیره‌سازی...
    
    //$uploadPath = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";

$uploadPath = __DIR__ . "/customer_data_$chatId.json";




    if (file_exists($uploadPath)) {
        $customerData = json_decode(file_get_contents($uploadPath), true);

        if (isset($customerData[$oldName])) {
            // بررسی اینکه آیا نام جدید قبلاً وجود دارد یا نه
            if (isset($customerData[$newName])) {
                
                
               // $newName2=$newName;
//$newName2 = str_replace("-", "_", $newName2);
                
                
                
                $newName = "<a href='http://t.me/book_debt_bot'>$newName</a>";
 
                
                sendMessage($chatId, "❌نام $newName از قبل در لیست موجود هست.");
            } else {
                // تغییر نام کلید مشتری
                $customerData[$newName] = $customerData[$oldName];
                unset($customerData[$oldName]);

                // به‌روزرسانی نام‌ها در دکمه‌ها
                foreach ($customerData['buttons'] as &$button) {
                    $button = str_replace($oldName, $newName, $button);
                }

                // ذخیره تغییرات در فایل
               // file_put_contents($uploadPath, json_encode($customerData, JSON_UNESCAPED_UNICODE));

$fileContent = json_encode($customerData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
file_put_contents($uploadPath, $fileContent);





                // حذف دکمه‌های قبلی
                $removeKeyboard = [
                    'remove_keyboard' => true
                ];
                file_get_contents($apiURL . "sendMessage?" . http_build_query([
                    'chat_id' => $chatId,
                    'text' => '',
                    'reply_markup' => json_encode($removeKeyboard)
                ]));

                // ساخت دکمه‌های جدید از فایل JSON
                $newButtons = $customerData['buttons'];
                $keyboard = [];
                $row = [];

                foreach ($newButtons as $index => $buttonName) {
                    // دکمه‌ها را یکی یکی اضافه می‌کنیم (هر دو دکمه در یک ردیف)
                    $row[] = ['text' => $buttonName];
                    if (count($row) == 2) {
                        $keyboard[] = $row;
                        $row = []; // خالی کردن ردیف برای دکمه‌های بعدی
                    }
                }

                if (!empty($row)) {
                    $keyboard[] = $row;
                }

                // ارسال دکمه‌های جدید به تلگرام
                $replyMarkup = json_encode([
                    'keyboard' => $keyboard,
                    'resize_keyboard' => true,
                    'one_time_keyboard' => false
                ]);

                sendMessage($chatId, "✅ نام مشتری با موفقیت ویرایش شد.", $replyMarkup);
                sendMessage($chatId, "", $replyMarkup); // ارسال دکمه‌ها بدون متن پیام
            }
        } else {
            
            $oldName2=$oldName;
$oldName2 = str_replace("-", "_", $oldName2);
            
            sendMessage($chatId, "❌نام #$oldName2 در لیست موجود نیست.");
        }
    } else {
        sendMessage($chatId, "❌ فایل اطلاعات مشتری یافت نشد.");
    }
}


if ($message === "/upload") {
    sendMessage($chatId, 'لطفا فایل "پشتیبان" را ارسال کنید تا آن را بازیابی کنیم.');
}




// فایل برای ذخیره پیام‌های قبلی
//$messagesFile = $_SERVER['DOCUMENT_ROOT'] . "/messages_$chatId.json";

$messagesFile = __DIR__ . "/messages_$chatId.json";



// خواندن پیام‌های قبلی از فایل (اگر فایل موجود باشد)
if (file_exists($messagesFile)) {
    $messages = json_decode(file_get_contents($messagesFile), true);
} else {
    $messages = [];
}

// ذخیره پیام جدید در ابتدای لیست
array_unshift($messages, $update["message"]["text"] ?? "");

// محدود کردن تعداد پیام‌ها (مثلاً فقط دو پیام آخر)
if (count($messages) > 2) {
    array_pop($messages); // حذف پیام قدیمی‌تر
}

// ذخیره لیست جدید پیام‌ها
file_put_contents($messagesFile, json_encode($messages));



if (count($messages) > 1 && $messages[1] == "/upload" && empty($messages[0])) {
    // دریافت اطلاعات فایل از API تلگرام
    $fileId = $update["message"]["document"]["file_id"];
    $fileInfo = json_decode(file_get_contents($apiURL . "getFile?file_id=" . $fileId), TRUE);
    $filePath = $fileInfo['result']['file_path'];
    $fileUrl = "https://api.telegram.org/file/bot$botToken/$filePath";

    // دریافت محتویات فایل و ذخیره آن
    $fileContent = file_get_contents($fileUrl);

    // تعیین مسیر ذخیره فایل
   // $uploadPath = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";

$uploadPath = __DIR__ . "/customer_data_$chatId.json";


    // ذخیره فایل
    file_put_contents($uploadPath, $fileContent);

    // ارسال پیامی که فایل با موفقیت آپلود شد
    sendMessage($chatId, "");

    // حذف دکمه‌های ربات
    $data = [
        'chat_id' => $chatId,
        'message_id' => $messageId, // شناسه پیامی که دکمه‌ها را دارد
        'reply_markup' => json_encode(['remove_keyboard' => true])
    ];
    file_get_contents($apiURL . "editMessageReplyMarkup?" . http_build_query($data));

    // بارگذاری اطلاعات فایل JSON
    $customerData = json_decode(file_get_contents($uploadPath), true);
    if (is_array($customerData) && isset($customerData['buttons']) && !empty($customerData['buttons'])) {
        // استخراج دکمه‌ها از بخش 'buttons' فایل JSON
        $buttons = $customerData['buttons'];
        $keyboard = [];
        $row = [];

        // ساخت دکمه‌ها در کنار هم (هر دو دکمه در یک ردیف)
        foreach ($buttons as $index => $buttonName) {
            // اگر تعداد دکمه‌ها به 2 رسید، آن‌ها را در یک ردیف قرار می‌دهیم
            $row[] = ['text' => $buttonName];
            if (count($row) == 2) {
                $keyboard[] = $row;
                $row = [];  // خالی کردن ردیف برای دکمه‌های بعدی
            }
        }

        // در صورتی که دکمه‌ها باقی‌مانده باشند و کمتر از 2 عدد در یک ردیف باشند
        if (!empty($row)) {
            $keyboard[] = $row;
        }

        // ارسال دکمه‌ها به تلگرام
        $replyMarkup = json_encode([
            'keyboard' => $keyboard,
            'resize_keyboard' => true,
            'one_time_keyboard' => true
        ]);

        // ارسال پیام جدید با دکمه‌های موجود
        sendMessage($chatId, "✅ اطلاعات با موفقیت بازنشانی شد", $replyMarkup);
    } else {
        // در صورتی که بخش 'buttons' در فایل موجود نباشد یا خالی باشد
        sendMessage($chatId, "❌ هیچ مشتری در لیست موجود نیست .");
    }

} else {
    // اگر شرایط مطابقت نداشت، پیامی ارسال نمی‌شود یا عملیات دیگری انجام می‌شود.
}


if ($message === "/start") {
    sendMessage($chatId, "♻️به ربات حسابداری (saj) خوش آمدید 🌹\n♻️لطفا یکی از گزینه های زیر را جهت آموزش انتخاب کنید \n\n🗞آموزش ها👇\n\n1⃣ثــبت بــدهی مــشتری  \n1⃣/amoozesh1\n2⃣ثبت دسته جمعی بدهی \n2⃣/amoozesh2\n3⃣ویــرایش نام مـــشتری   \n3⃣/amoozesh3\n4⃣ویـرایش بدهی مشتری    \n4⃣/amoozesh4\n5⃣حــــذف مــــــشتــری   \n5⃣/amoozesh5\n6⃣حـذف بـدهی مــشتری    \n6⃣/amoozesh6\n7⃣گــــــزارشــــات کــلی    \n7⃣/amoozesh7\n8⃣گزارشــات بازه تــاریخی    \n8⃣/amoozesh8 \n9⃣دریافت فایل پـشتیبان   \n9⃣/amoozesh9\n🔟تـنـظیمـات کــارخانـه    \n🔟/amoozesh10");
}





$esm="زهرا غفوری";
$toz="بابت اجاره خانه";
$mab="5000";
$dono="_در صورتیکه فقط فامیل را وارد میکنید نیار به علامت (:) نیست";
$alamat="علامت دو نقطه";
$nammo="نام مشتری را از توضیحات تفکیک میکند.";

$esm = "<a href='http://t.me/book_debt_bot'>$esm</a>";
$toz = "<a href='http://t.me/book_debt_bot'>$toz</a>";
$mab = "<a href='http://t.me/book_debt_bot'>$mab</a>";
$alamat = "<a href='http://t.me/book_debt_bot'>$alamat</a>";
$nammo = "<a href='http://t.me/book_debt_bot'>$nammo</a>";
$dono = "<a href='http://t.me/book_debt_bot'>$dono</a>";




if ($message === "/amoozesh1") {
    sendMessage($chatId, "🟢 نام مشتری را به همراه علامت (:) \nو مبلغ بدهی ارسال کنید:\n\nمثال:\nزهرا غفوری : بابت اجاره خانه 5000\nیا\nمحمدی فلش و مموری 125+170\n\n$alamat (:) \n$nammo\n$dono\n\n⬆️ در متن ارسالی بالا ...\n1️⃣ نام مشتری: $esm\n2️⃣ توضیحات بدهی: $toz\n3️⃣ مبلغ بدهی: $mab تومان\n✅ در حافظه ثبت می‌شود.\n\nراهنما 👈 /start");
    
}
 
 


$sjamee="ثبت دست جمعی برای یک مشتری:"; 
 
 $sjamee = "<a href='http://t.me/book_debt_bot'>$sjamee</a>";

 
 
 $jamei="🔹شما میتوانید بدهی مشتری هارو در یک پیام ارسال کنید.";
 
  $jamei = "<a href='http://t.me/book_debt_bot'>$jamei</a>";

 
 
 if ($message === "/amoozesh2") {
    sendMessage($chatId, "📚ثبت دست جمعی:

$jamei

مثال:
محمدی خرید اسپیکر 495
خانوم رمضانی : تعمیر گوشی 55
سجاد قاضی : شارژر و هندزفری 250+480

#توجه: با گذاشتن علامت (:) بعد از نام مشتری
توضیحات بدهی رو از نام مشتری تفکیک کنید
ـ➖➖➖➖➖➖➖➖➖

📚$sjamee
اول نام ، علامت (@) بذارید تا کل بدهی های سطر های بعدی برای همان مشتری ثبت شود.

مثال:
@ فاطمه جوان بخت  : خرید گوشی 8000
بابت اسپیکر 320
مانده حساب قبلی 1200\n\nراهنما 👈 /start");
}





$nam1="احمدی"; 
 $nam2="محمدی"; 
 
 
 $nam1 = "<a href='http://t.me/book_debt_bot'>$nam1</a>";
$nam2 = "<a href='http://t.me/book_debt_bot'>$nam2</a>";




if ($message === "/amoozesh3") {
    sendMessage($chatId, "♦️برای ویرایش نام ، به اینصورت عمل کنید:\n\nمحمدی=احمدی\n\n🔷در متن ارسالی بالا ، نام $nam1 جایگزین نام $nam2 میشود\n\nراهنما 👈   /start");
}




if ($message === "/amoozesh4") { 
    sendMessage($chatId, "♻️برای ویرایش بدهی به اینصورت عمل کنید👇

{شماره بدهی } {نام مشتری } = {توضیحات جدید } {مبلغ جدید }

🔹مثال:
25 آقای قاضی = بابت گوشی 1500

#در_متن_ارسالی_بالا_بدهی_شماره 25 
#برای_مشتری آقای قاضی
#با_توضیحات بابت گوشی 
#و_مبلغ 1500 
#ویرایش_میشود

راهنما 👈  /start");
}




if ($message === "/amoozesh5") {
    sendMessage($chatId, "🟢 کلمه حذف رو به همراه نام مشتری ارسال کنید:
مثال:
حذف امیر محمدی

راهنما 👈   /start");
}


if ($message === "/amoozesh6") {
    sendMessage($chatId, "🟢 دکمه ی \"لیست {مشتری}\" را بزنید\nهر شماره ای که قصد حذف آن را دارید به همراه نام مشتری و کلمه ی \"حذف\" ارسال کنید\nـ➖➖➖➖➖➖➖\n🔹حذف تکی:\nمثال: 12 حذف محمدی\n🔸در متن ارسالی بالا، بدهی شماره 12 از لیست حذف میشود\nـ➖➖➖➖➖➖➖\n🔹حذف انتخابی:\nمثال: 1 4 5 حذف محمدی\n🔸در متن ارسالی بالا، بدهی شماره 1 و 4 و 5 حذف میشود\nـ➖➖➖➖➖➖➖\n🔹حذف دسته ای:\nمثال: 3-8 حذف محمدی\n🔸در متن ارسالی بالا، بدهی شماره 3 تا 8 حذف میشود\n\nراهنما 👈   /start");
}



$goza="گزارشات کلی"; 
 
 $goza = "<a href='http://t.me/book_debt_bot'>$goza</a>";


if ($message === "/amoozesh7") { 
    sendMessage($chatId, "📄 برای گزارشات کل مشتریان\n متن $goza را ارسال کنید.

راهنما👈    /start");
}


//************************************

if ($message === "/amoozesh8") {
    sendMessage($chatId, "برای گزارشات در بازه تاریخی خاص
به این صورت عمل کنید: 

تاریخ اول 
تاریخ دوم 
نام مشتری
ـ➖➖➖➖➖➖➖
مثال: 
ـ1401/02/01 
ـ1403/10/30 
سجاد قاضی
ـ➖➖➖➖➖➖➖
#در_متن_ارسالی_بالا
#لیست_گزارشات_از_تاریخ
1401/02/01 تا 1403/10/30
#برای_مشتری_سجاد_قاضی_ارسال_میشود .
ـ➖➖➖➖➖➖➖
اگر فقط جمع تراکنش در بازه تاریخی رو نیاز دارید
فقط کافیه کلمه ی \"جمع\" رو به متن اضافه کنید
ـ➖➖➖➖➖➖➖
مثال:
ـ1401/02/01
ـ1403/10/30 
جمع فاطمه جوان بخت

راهنما 👈   /start");
}



if ($message === "/amoozesh9") {
    sendMessage($chatId, "⬇️ دانلود فایل اطلاعات 👈    /download
⬆️ ارسال فایل اطلاعات 👈    /upload

🔹با زدن دکمه ی اول ، فایل پشتیبان برای شما ارسال میشود
♦️برای بازیابی اطلاعات ، روی دکمه ی دوم بزنید و فایل دانلود شده را به ربات ارسال کنید

راهنما   👈   /start");
exit;
    
}




$tanzim = " تنظیمات کارخانه 9249 ";

$tanzim = "<a href='http://t.me/book_debt_bot'>$tanzim</a>";


if ($message === "/amoozesh10") {
    sendMessage($chatId, "♦️برای بازگشت به تنظیمات کارخانه\nمتن \"$tanzim\" را ارسال کنید\n\nراهنما   👈   /start");

    exit;
}



    
    // مسیر فایل JSON برای ذخیره اطلاعات با استفاده از chatId
   //$dataFile = $_SERVER['DOCUMENT_ROOT'] . "/customer_data_$chatId.json";
   

$dataFile = __DIR__ . "/customer_data_$chatId.json";

  
function downloadOnce($chatId) {
    global $apiURL, $dataFile;
    
    if (file_exists($dataFile)) {
        $postData = [
            'chat_id' => $chatId,
            'document' => new CURLFile(realpath($dataFile))
        ];
 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiURL . "sendDocument");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
    }
}
//







if ($message === "/download") {
    downloadOnce($chatId);
}

   if ($message === "تنظیمات کارخانه 9249") {
    sendMessage($chatId, "قبل از حذف اطلاعات🗑\nفایل پشتیبان را برای شما ارسال کردیم⬇️");

// ارسال فایل پشتیبان
downloadOnce($chatId);

// ارسال پیام تایید پس از ارسال فایل
//sendMessage($chatId, "✅ تمام اطلاعات مشتریان حذف شد\n\nبازیابی اطلاعات 👈 /upload.🗑", $encoded_keyboard);

}

  

    
    if ($message === "تنظیمات کارخانه 9249") {
    // کد بدون توقف برای حالت تنظیمات کارخانه
    // می‌توانید کد تنظیمات کارخانه را در اینجا بنویسید
} else {
    // بررسی چت آیدی‌ها برای استثنا کردن کاربران مجاز
    if (!in_array($chatId, [586924831, 676807927]) && file_exists($dataFile) && filesize($dataFile) >= 50 * 1024) {
        sendMessage($chatId, "❌برنامه محدود هست❌\n   برای دریافت نسخه نامحدود ، به ایدی ادمین پیام بدید \nیا تنظیمات کارخانه بزنید  \n\nایدی ادمین 👈        @sajad_ghazi");
        exit; // توقف اجرای کد
    }
}

// ادامه کدهای اصلی
    
    


// حداکثر حجم فایل (به بایت)
$maxFileSize = 5 * 1024 * 1024; // 5 مگابایت



//$allowedChatIds = ["586924831", "67680727" , "67680792"]; // شناسه‌های مجاز خود را اینجا اضافه کنید

  // if (!in_array($chatId, $allowedChatIds)) {
    //  sendMessage($chatId, "❌ شما اجازه دسترسی ندارید.");
      //  exit; // توقف اجرای کد
   //}



if (preg_match('/^\d+(\.|_|$)/', $message)) {
    // ارسال پیام خطا برای وجود اعداد و علائم خاص در ابتدای پیام
    sendMessage($chatId, "❌ متن وارد شده صحیح نیس");
    exit; // متوقف کردن اجرای کد
} elseif (preg_match('/[\[\]]/', $message)) {
    // ارسال پیام خطا برای وجود براکت‌ها در پیام
    sendMessage($chatId, "❌ متن وارد شده صحیح نیست. لطفا از براکت‌ها در متن استفاده نکنید.");
    exit; // متوقف کردن اجرای کد
} elseif (trim($message) !== "" && 
          !preg_match('/\s/', $message) && 
          !in_array($message, ["تنظیمات کارخانه 9249", "/start", "/amoozesh1", "پاااک", "/amoozesh2","/amoozesh8", "/amoozesh3", "/amoozesh4","/amoozesh7","/amoozesh6", "/amoozesh5", "حجم_باقیمانده", "/download", "/upload"]) && 
          strpos($message, "customer") === false && 
          strpos($message, "=") === false) {

    // ارسال پیام خطا برای پیام بدون فاصله (و با چک کردن اینکه "تنظیمات کارخانه 9249" نباشد)
    sendMessage($chatId, "❌ لطفا میزان بدهی را هم وارد کنید:\n مثال: محمدی 350");
    exit; // متوقف کردن اجرای کد
}


    
    // بارگذاری داده‌های مشتری از فایل JSON
    $customerData = loadData();

function downloadEveryDay($chatId) {
    global $apiURL, $dataFile;

    // ارسال فایل یک بار
    $postData = [
        'chat_id' => $chatId,
        'document' => new CURLFile(realpath($dataFile))
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiURL . "sendDocument");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    // تاخیر 24 ساعته (86400 ثانیه)
    sleep(86400);
}




// بررسی می‌کنیم که آیا پیام با کلمه "حذف" شروع می‌شود
if (strpos($message, 'حذف') === 0) {
    // اگر پیام با "حذف" شروع شد، از ادامه پردازش پرش می‌کند
    goto skip;
}

if (preg_match('/^\d/', $message)) {
    // اگر پیام با عدد شروع شود

    // بررسی می‌کنیم که آیا کلمه "حذف" در پیام وجود دارد یا نه
 // بررسی می‌کنیم که آیا کلمه "حذف" در پیام وجود دارد یا نه
if (strpos($message, 'حذف') === false) {
    sendMessage($chatId, "❌ برای حذف بدهی، کلمه \"حذف\" را همراه آن تایپ کنید\nمثال:\n5 محمدی حذف");
    exit; // متوقف کردن اجرای کد
}
}




  $message = str_replace('حذف', '', $message);
skip:




  
if (preg_match('/^([\d\s\-]+)\s+(\S+)/', $message, $matches)) {
    // استخراج محدوده یا اعداد و نام مشتری
   
   
    $rangePart = trim($matches[1]);
    $customerName = $matches[2];

    // استخراج اعداد و محدوده‌ها
    preg_match_all('/(\d+-\d+|\d+)/', $rangePart, $transactionMatches);
    $transactionIndexes = [];
    
    foreach ($transactionMatches[0] as $range) {
        if (strpos($range, '-') !== false) {
            // اگر فرمت "2-7" است، محدوده را پردازش کن
            list($start, $end) = explode('-', $range);
            $transactionIndexes = array_merge($transactionIndexes, range((int)$start, (int)$end));
        } else {
            // اگر عدد واحد است، به آرایه اضافه کن
            $transactionIndexes[] = (int)$range;
        }
    }

    // حذف اعداد تکراری و مرتب‌سازی شماره تراکنش‌ها به صورت نزولی
    $transactionIndexes = array_unique($transactionIndexes);
    rsort($transactionIndexes);

    // حذف تراکنش‌ها
    $deleted = 0;
    foreach ($transactionIndexes as $transactionIndex) {
        $transactionIndex -= 1; // تبدیل به اندیس صفرمبنا
        $result = deleteTransactionByIndex($customerName, $transactionIndex, $customerData);
        if ($result) {
            $deleted++;
        }
    }




//$customerName2=$customerName;
//$customerName2 = str_replace("-", "_", $customerName2);

$customerName = "<a href='http://t.me/book_debt_bot'>$customerName</a>";



     if ($deleted > 0) {
    sendMessage($chatId, "✅ تراکنش‌ شماره‌ی خواسته شده برای مشتری {$customerName} حذف شد.");

     } else {
    sendMessage($chatId, "❌ هیچ تراکنشی برای مشتری {$customerName} پیدا نشد.");
}

    saveData($customerData);
    
    return;
}






     if ($message === "حجم_باقیمانده") {
        $currentFileSize = filesize($dataFile);
        $remainingSpace = $maxFileSize - $currentFileSize;
        sendMessage($chatId, "حجم حافظه پر شده: " . formatSize($currentFileSize) . "\nحجم باقیمانده: " . formatSize($remainingSpace));
    }elseif ($message === "تنظیمات کارخانه 9249") {
    $customerData = []; // پاک کردن داده‌ها
    saveData($customerData); // ذخیره تغییرات

    // تعریف کیبورد جدید با دکمه "start" از نوع معمولی
    $keyboard = [
        'keyboard' => [
            [
                ['text' => '/start']
            ]
        ],
        'resize_keyboard' => true, // اندازه کیبورد به اندازه مناسب
        'one_time_keyboard' => true // کیبورد فقط برای یک بار نمایش داده شود
    ];

    // تبدیل آرایه کیبورد به فرمت JSON
    $encoded_keyboard = json_encode($keyboard);

    // ارسال پیام با کیبورد جدید
    sendMessage($chatId, "✅ تمام اطلاعات مشتریان حذف شد.🗑

بازیابی اطلاعات 👈 /upload", $encoded_keyboard);
}elseif (strpos($message, "حذف ") === 0) {
    $parts = explode(" ", $message);
    if (count($parts) < 2) {
        sendMessage($chatId, "لطفا نام مشتری را مشخص کنید.");
        return;
    }
    
    //********************************
   $customerName = $parts[1];
    if (isset($customerData[$customerName])) {
        unset($customerData[$customerName]); // حذف اطلاعات مشتری
        $customerData['buttons'] = array_values(array_filter($customerData['buttons'], function ($button) use ($customerName) {
            return !in_array($button, ["جمع $customerName", "لیست $customerName"]);
        }));
        saveData($customerData); // ذخیره تغییرات

        // اضافه کردن دکمه "start" فقط در صورتی که هیچ دکمه‌ای وجود نداشته باشد
        if (empty($customerData['buttons'])) {
            $customerData['buttons'][] = '/start';
        }

        // ایجاد کیبورد جدید با دکمه‌ها
        $keyboard = createKeyboard($customerData['buttons']);
        
        $customerName2=$customerName;
        
        $customerName2 = str_replace("-", "_", $customerName2);
sendMessage($chatId, "✅ اطلاعات مشتری #$customerName2 حذف شد.", $keyboard);


    } else {
     //   
        // $customerName2=$customerName;
        
       // $customerName2 = str_replace("-", "_", $customerName2);
        
        
        
        $customerName = "<a href='http://t.me/book_debt_bot'>$customerName</a>";

        
        sendMessage($chatId, "❌ اطلاعاتی برای مشتری $customerName پیدا نشد.");
    } 


    } elseif (strpos($message, "جمع ") === 0 || strpos($message, "لیست ") === 0) {
        $parts = explode(" ", $message);
        if (count($parts) < 2) {
            sendMessage($chatId, "لطفا نام مشتری را وارد کنید.");
            return;
        }
        $customerName = $parts[1];
if (strpos($message, "جمع ") === 0) {
    $parts = explode(" ", $message);
    if (count($parts) < 2) {
        sendMessage($chatId, "لطفا نام مشتری را وارد کنید.");
        return;
    }
    $customerName = $parts[1];

    // بررسی اینکه آیا مشتری در داده‌ها وجود دارد
    if (!isset($customerData[$customerName]) || empty($customerData[$customerName])) {
        $customerName = "<a href='http://t.me/book_debt_bot'>$customerName</a>";
        sendMessage($chatId, "❌ هیچ اطلاعاتی برای مشتری $customerName وجود ندارد.");
        return;
    }

  // محاسبه جمع کل
list($totalToman, $totalDollar) = calculateTotal($customerName, $customerData);

// بررسی منفی بودن totalToman و افزودن "بستانکار" در صورت منفی بودن
$totalTomanText = $totalToman < 0 ? " بستانکار" : "";

// قالب‌بندی عدد totalToman بدون استفاده از abs
$formattedTotalTomanText = number_format($totalToman, 2, '.', ',');

// اضافه کردن "تومان" و "بستانکار" در صورت لزوم
$finalTotalTomanText = $formattedTotalTomanText . " تومان" . $totalTomanText;

// حذف صفرهای اضافی و نقطه در صورت وجود
$finalTotalTomanText = rtrim(rtrim($formattedTotalTomanText, '0'), '.');

// ارسال پیام به کاربر با مقدارهای نهایی
$customerName = "<a href='http://t.me/book_debt_bot'>$customerName</a>";
if ($finalTotalTomanText < 0) {
    $finalTotalTomanText .= " #بستانکار";
}

sendMessage($chatId, "📘  مجموع بدهی $customerName : " . $finalTotalTomanText . "\n\nراهنما👈    /start");



} elseif (strpos($message, "لیست ") === 0) {
            $customerList = getCustomerList($customerName, $customerData);
            sendMessage($chatId, $customerList);
        }
    } else {
        $lines = explode("\n", $message);
$responseMessages = "";
$customerTotals = [];

foreach ($lines as $line) {
    $parts = explode(" ", $line);
    if (count($parts) < 2) continue;

    $customerName = $parts[0];
    $line = str_replace(',', '', $line); // حذف کاما
$amount = extractAmount($line);

   $currency = "تومان";




    if ($amount === null && strpos($message, '=') === false) {
    sendMessage($chatId, "❌ لطفا میزان بدهی را هم وارد کنید:\n مثال: محمدی 2700");
    exit; // توقف کامل اسکریپت
}

   $description = (count($parts) > 2) ? implode(" ", array_slice($parts, 1, -1)) : "بدون موضوع";
if (is_numeric($description)) { 
    $description = "بدون موضوع";
}

    
    $date = jDateTime::date("Y-m-d", time(), false);
    $date = convertPersianNumbersToLatin($date);

    $customerData[$customerName][] = [
        "description" => $description,
        "amount" => $amount,
        "currency" => $currency,
        "date" => $date
    ];

    if (!isset($customerTotals[$customerName])) {
        $customerTotals[$customerName] = ['totalToman' => 0, 'totalDollar' => 0];
    }

    // جمع یا کسر بدهی بر اساس عدد منفی یا مثبت
    if ($currency === "تومان") {
        $customerTotals[$customerName]['totalToman'] += $amount;
    } else {
        $customerTotals[$customerName]['totalDollar'] += $amount;
    }

    // افزودن دکمه‌های جمع و لیست
    
    
    
    // بررسی وجود کلید 'buttons' و مقداردهی اولیه در صورت عدم وجود
if (!isset($customerData['buttons']) || !is_array($customerData['buttons'])) {
    $customerData['buttons'] = [];
}

if (!in_array("جمع " . $customerName, $customerData['buttons'])) {
    $customerData['buttons'][] = "جمع " . $customerName;
}
if (!in_array("لیست " . $customerName, $customerData['buttons'])) {
    $customerData['buttons'][] = "لیست " . $customerName;
}

}







if (strpos($message, '=') !== false) {
    exit; // متوقف کردن کد در صورتی که متن حاوی "=" باشد
}
foreach ($customerTotals as $customerName => $totals) {
    // محاسبه بدهی کل تا امروز
    list($previousTotalToman, $previousTotalDollar) = calculateTotal($customerName, $customerData);
    $totalToman = $previousTotalToman + $totals['totalToman'];
    $totalDollar = $previousTotalDollar + $totals['totalDollar'];
    $sajad = $totalToman - $totals['totalToman'];
    $sajad2 = $totalDollar - $totals['totalDollar'];

    // ساخت تاریخ با نمایش روز هفته
    $dayOfWeek = jDateTime::date('l', time()); // روز هفته
    $day = jDateTime::date('j', time()); // روز ماه
    $month = jDateTime::date('F', time()); // نام ماه
    $year = jDateTime::date('Y', time()); // سال
    $date = "$dayOfWeek $day $month $year"; // تاریخ نهایی با روز هفته

    // تولید پیام‌های پاسخ
    $responseMessages .= "👤 تراکنش برای <a href='http://t.me/book_debt_bot'>$customerName</a> ثبت شد: " . 
        htmlspecialchars(rtrim(rtrim(number_format($totals['totalToman'], 2, '.', ','), '0'), '.')) . " تومان\n\n";
    $responseMessages .= "🖨 <a href='http://t.me/book_debt_bot'>تراکنش های ثبت شده تا امروز</a>: " . 
        htmlspecialchars(rtrim(rtrim(number_format($sajad, 2, '.', ','), '0'), '.')) . " تومان\n";
    $responseMessages .= "\n🗓 <a href='http://t.me/book_debt_bot'>تاریخ ثبت</a>: " . $date . "\n\n";
}








saveData($customerData);
$keyboard = createKeyboard($customerData['buttons']);
sendMessage($chatId, $responseMessages, $keyboard);

    }
}

// ایجاد کیبورد سفارشی با دکمه‌ها در کنار هم
function createKeyboard($buttons) {
    $keyboard = [];
    $row = [];
    foreach ($buttons as $button) {
        $row[] = $button;
        if (count($row) == 2) {
            $keyboard[] = $row;
            $row = [];
        }
    }
    if (count($row) > 0) {
        $keyboard[] = $row;
    }
    return json_encode(["keyboard" => $keyboard, "resize_keyboard" => true, "one_time_keyboard" => true]);
}

// فرمت حجم
function formatSize($size) {
    if ($size < 1024) {
        return $size . ' بایت';
    } elseif ($size < 1048576) {
        return round($size / 1024, 2) . ' کیلوبایت';
    } else {
        return round($size / 1048576, 2) . ' مگابایت';
    }
}




function extractAmount($text) {
    // حذف فاصله‌های اضافی
    $text = preg_replace('/\s+/', '', $text);

$text = preg_replace('/\b\d+(\.\d+)?\.?(?=[a-zA-Zآ-ی])/', '', $text);
    // ابتدا عملیات تقسیم و ضرب را انجام می‌دهیم
    while (preg_match('/([+-]?\d+(\.\d+)?([*\/])\d+(\.\d+)?)/', $text, $match)) {
        $operation = $match[0];
        if (strpos($operation, '/') !== false) {
            // عملیات تقسیم
            list($numerator, $denominator) = explode('/', $operation);
            $result = floatval($numerator) / floatval($denominator);
        } elseif (strpos($operation, '*') !== false) {
            // عملیات ضرب
            list($factor1, $factor2) = explode('*', $operation);
            $result = floatval($factor1) * floatval($factor2);
        }
        $text = str_replace($operation, $result, $text); // جایگزینی عملیات با نتیجه
    }

    // یافتن تمامی اعداد و علامت‌های مثبت و منفی در متن
    preg_match_all('/([+-]?\d+(\.\d+)?)/', $text, $matches);

    // اگر هیچ عددی پیدا نشد، null برگردانید
    if (empty($matches[0])) {
        return null;
    }

    // محاسبه مجموع تمامی اعداد با در نظر گرفتن علامت‌های آن‌ها
    $amount = 0;
    foreach ($matches[0] as $match) {
        $amount += floatval($match); // جمع و تفریق اعداد
    }

    return $amount;
}










// حذف تراکنش خاص
function deleteTransaction($customerName, $description, $amount, &$customerData) {
    if (isset($customerData[$customerName])) {
        foreach ($customerData[$customerName] as $index => $transaction) {
            if ($transaction['description'] === $description && intval($transaction['amount']) === $amount) {
                unset($customerData[$customerName][$index]); // حذف تراکنش
                $customerData[$customerName] = array_values($customerData[$customerName]); // مرتب‌سازی مجدد اندیس‌ها
                return true; // حذف موفقیت‌آمیز
            }
        }
    }
    return false; // تراکنش پیدا نشد
}

// محاسبه جمع کل بدهی
function calculateTotal($customerName, $customerData) {
    $totalToman = 0;
    $totalDollar = 0;
    if (isset($customerData[$customerName])) {
        foreach ($customerData[$customerName] as $transaction) {
            if ($transaction['currency'] === 'تومان') {
                $totalToman += $transaction['amount'];
            } else {
                $totalDollar += $transaction['amount'];
            }
        }
    }
    return [$totalToman, $totalDollar];
}

// تبدیل اعداد فارسی به لاتین
function convertPersianNumbersToLatin($str) {
    $persianNumbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
    $latinNumbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
    return str_replace($persianNumbers, $latinNumbers, $str);
}

function removeSymbolsAndNumbers($text) {
    // جایگزینی علامت + و - با کلمه "سلام"
    $text = preg_replace('/[+-]/', 'بدون موضوع', $text);
    
    // حذف هر عددی از متن
    $text = preg_replace('/\d+/', '', $text);
    
    return $text;
}

// مثال استفاده از تابع
$originalText = "این متن دارای 5+ و -3 است";
$cleanedText = removeSymbolsAndNumbers($originalText);
echo $cleanedText;




function getCustomerList($customerName, $customerData) { 
    if (!isset($customerData[$customerName]) || count($customerData[$customerName]) === 0) {
       // $customerName2 = str_replace("-", "_", $customerName);


 $customerName = "<a href='http://t.me/book_debt_bot'>$customerName</a>";
  
       return "❌ هیچ تراکنشی برای مشتری $customerName ثبت نشده است.";
    }

    // عنوان لیست مشتری
    $list = "👤 لیست بدهی <a href='http://t.me/book_debt_bot'>$customerName</a>:\nـ➖➖➖➖➖➖➖\n";
    $totalToman = 0;
    $totalDollar = 0;

    // شمارنده و حلقه برای اضافه کردن تراکنش‌ها
    $counter = 1;
    foreach ($customerData[$customerName] as $transaction) {
        $amount = $transaction['amount'];
        $currency = $transaction['currency'];
        $description = $transaction['description'];

        // اگر description خالی باشد، مقدار آن را برابر با "بدون توضیح" قرار می‌دهیم
        if (empty($description)) {
            $description = "بدون توضیح";
        }

        if ($currency === 'تومان') {
            $totalToman += $amount;
        } elseif ($currency === 'دلار') {
            $totalDollar += $amount;
        }

        if (strpos($description, 'بدون موضوع') !== false) {
            if (trim($description) !== 'بدون موضوع') {
                $description = str_replace('بدون موضوع', '', $description);
                $description = trim($description);
            }
        }

        $dadgi = "دادگی";

        if ($amount < 0) {
            $currency = $dadgi;
        }

        // قالب‌بندی currency به عنوان لینک تنها در صورت منفی بودن amount
        if ($amount < 0) {
            $currency = "<a href='http://t.me/book_debt_bot?currency=" . urlencode($currency) . "'>$currency</a>";
        }


$tari="تاریخ:";

 $tari = "<a href='http://t.me/book_debt_bot'>$tari</a>";


        // فرمت کردن مبلغ و حذف صفرهای اضافی بعد از اعشار
        $formattedAmount = number_format($amount, 2, '.', ',');
        $formattedAmount = rtrim(rtrim($formattedAmount, '0'), '.');

      // فرض بر این است که تاریخ به صورت "1403-08-12" در دسترس است.
$tari2 = $transaction['date']; // مثلا "1403-08-12"

// تقسیم تاریخ شمسی به سال، ماه و روز
list($year, $month, $day) = explode('-', $tari2);

// تبدیل تاریخ شمسی به میلادی
$gregorianDate = jDateTime::toGregorian($year, $month, $day); // این تابع تاریخ شمسی را به میلادی تبدیل می‌کند
list($gregorianYear, $gregorianMonth, $gregorianDay) = $gregorianDate;

// تبدیل تاریخ میلادی به فرمت شمسی دلخواه
$dayOfWeek = jDateTime::date('l', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // روز هفته
$dayOfMonth = jDateTime::date('j', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // روز ماه
$monthName = jDateTime::date('F', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // نام ماه
$yearFull = jDateTime::date('Y', mktime(0, 0, 0, $gregorianMonth, $gregorianDay, $gregorianYear)); // سال

// ساخت رشته تاریخ نهایی
$formattedDate = "$dayOfWeek $dayOfMonth $monthName $yearFull";

// استفاده از تاریخ فرمت‌شده در کد

$list .= $counter . "- " . htmlspecialchars($description) . " : " . htmlspecialchars($formattedAmount) . " " . $currency . "\n$tari $formattedDate\n\n";



        $counter++;
    }

    // افزودن جمع کل
    if ($totalToman < 0) {
    $formattedTotalToman = number_format($totalToman, 2, '.', ',');
    $formattedTotalToman = rtrim(rtrim($formattedTotalToman, '0'), '.');

    // قالب‌بندی لینک برای "بستانکار"
    $creditorLink = "<a href='http://t.me/book_debt_bot'>بستانکار</a>";

    $list .= "ـ➖➖➖➖➖➖➖\n📘 مجموع بدهی: " . htmlspecialchars($formattedTotalToman) . " تومان $creditorLink\n\nراهنما👈    /start\n";
} else {
        $formattedTotalToman = number_format($totalToman, 2, '.', ',');
        $formattedTotalToman = rtrim(rtrim($formattedTotalToman, '0'), '.');
        $list .= "ـ➖➖➖➖➖➖➖\n📘 مجموع بدهی: " . htmlspecialchars($formattedTotalToman) . " تومان\n\nراهنما👈    /start\n";
    }

    return $list;
}

// حذف تراکنش بر اساس شماره‌گذاری (ایندکس)
function deleteTransactionByIndex($customerName, $index, &$customerData) {
    if (isset($customerData[$customerName]) && isset($customerData[$customerName][$index])) {
        unset($customerData[$customerName][$index]); // حذف تراکنش
        $customerData[$customerName] = array_values($customerData[$customerName]); // مرتب‌سازی مجدد اندیس‌ها
        return true;
    }
    return false; // اگر تراکنش پیدا نشد
}






function sendMessage($chatId, $message, $keyboard = null) {
    global $apiURL;

    // تنظیم حداکثر تعداد کاراکتر برای هر پیام
    $maxMessageLength = 4000;

    // تقسیم پیام به بخش‌های زیر 2000 کاراکتر
    $messages = splitMessage($message, $maxMessageLength);

    // ارسال هر بخش به صورت جداگانه
    foreach ($messages as $part) {
        // اگر پیام شامل لینک است، لینک را در تگ <a> قرار دهید و بقیه متن را بولد کنید
        $formattedMessage = "<b>" . $part . "</b>"; // این برای بولد کردن است

        // در صورتی که بخواهید لینک هم داشته باشید:
        $formattedMessage = str_replace("your_link_here", "<a href='http://example.com'>Click Here</a>", $formattedMessage);

        $data = [
            'chat_id' => $chatId,
            'text' => $formattedMessage, // قالب‌بندی شده با HTML
            'parse_mode' => 'HTML', // حالت HTML
            'reply_markup' => $keyboard
        ];
        file_get_contents($apiURL . "sendMessage?" . http_build_query($data));

        usleep(500000); // 500000 میکروثانیه = 500 میلی‌ثانیه
    }
}


// تابع برای تقسیم پیام
function splitMessage($message, $maxLength) {
    // ایجاد آرایه برای بخش‌های پیام
    $parts = [];

    // حلقه برای تقسیم پیام به بخش‌های کوچک‌تر
    while (strlen($message) > $maxLength) {
        // پیدا کردن نقطه‌ای مناسب برای برش پیام که با شماره شروع شود
        $splitPos = strrpos(substr($message, 0, $maxLength), "\n");

        // اگر نقطه‌ای پیدا نشد، بخش باقی‌مانده را ببر
        if ($splitPos === false) {
            $splitPos = $maxLength;
        } else {
            // بررسی اینکه بخش بعدی با شماره جدید شروع شود
            $nextLine = substr($message, $splitPos + 1);
            if (!preg_match('/^\d+-/', $nextLine)) {
                // اگر با شماره جدید شروع نمی‌شود، بگرد دنبال نقطه دیگری
                $splitPos = strrpos(substr($message, 0, $splitPos), "\n");
                if ($splitPos === false) $splitPos = $maxLength;
            }
        }

        // جدا کردن بخش از پیام و افزودن آن به آرایه
        $parts[] = substr($message, 0, $splitPos);
        $message = substr($message, $splitPos + 1);
    }

    // افزودن بخش باقی‌مانده
    $parts[] = $message;

    return $parts;
}






// بارگذاری داده‌ها از فایل JSON
function loadData() {
    global $dataFile;
    if (file_exists($dataFile)) {
        $jsonData = file_get_contents($dataFile);
        return json_decode($jsonData, true);
    }
    return ['buttons' => []];
}

// ذخیره داده‌ها در فایل JSON
function saveData($data) {
    global $dataFile;
    file_put_contents($dataFile, json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
}
?>