<?php

require_once __DIR__ . "/herbasc/config.php";
require_once __DIR__ . "/database.php"; 
require_once __DIR__ . "/herbas/index.php";
require_once __DIR__ . "/fiat.php";
require_once __DIR__ . "/crypto.php";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$userStep = "none";
if (isset($class->chatId) && $class->chatId != 0) {
    if ($class->chatId < 0) { // ثبت گروه
        $stmt = $db->prepare("INSERT IGNORE INTO groups (id, username) VALUES (:id, :username)");
        $stmt->execute([':id' => $class->chatId, ':username' => $class->grNme ?? "none"]);
    }

    if (isset($class->fromId) && $class->fromId != 0) { // ثبت کاربر
        $stmt = $db->prepare("INSERT IGNORE INTO users (id, username) VALUES (:id, :username)");
        $stmt->execute([':id' => $class->fromId, ':username' => $class->usrNme ?? "none"]);

        // گرفتن مرحله فعلی کاربر
        $stmt = $db->prepare("SELECT step FROM users WHERE id = :id");
        $stmt->execute([':id' => $class->fromId]);
        $fetched = $stmt->fetchColumn();
        if ($fetched) {
            $userStep = $fetched;
        }
    }
}

// === سیستم بکاپ دیتابیس ===
$backupSettingsFile = __DIR__ . '/backup_settings.json';
if (!file_exists($backupSettingsFile)) {
    file_put_contents($backupSettingsFile, json_encode(['auto' => false, 'last' => time()]));
}
$bSettings = json_decode(file_get_contents($backupSettingsFile), true);

if (!function_exists('exportDB')) {
    function exportDB($db) {
        $sql = "-- Database Backup: " . date("Y-m-d H:i:s") . "\n\n";
        $tables = $db->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
        foreach ($tables as $table) {
            $sql .= "DROP TABLE IF EXISTS `$table`;\n";
            $create = $db->query("SHOW CREATE TABLE `$table`")->fetch(PDO::FETCH_ASSOC);
            $sql .= $create['Create Table'] . ";\n\n";
            $rows = $db->query("SELECT * FROM `$table`")->fetchAll(PDO::FETCH_ASSOC);
            foreach ($rows as $row) {
                $keys = array_map(function ($k) { return "`$k`"; }, array_keys($row));
                $values = array_map(function ($v) use ($db) { return $db->quote($v); }, array_values($row));
                $sql .= "INSERT INTO `$table` (" . implode(', ', $keys) . ") VALUES (" . implode(', ', $values) . ");\n";
            }
            $sql .= "\n\n";
        }
        $filename = "db_backup_" . date("Y-m-d_H-i") . ".sql";
        file_put_contents(__DIR__ . "/" . $filename, $sql);
        return __DIR__ . "/" . $filename;
    }
}

// چک کردن زمان بکاپ خودکار (۴۸ ساعت)
if ($bSettings['auto'] && (time() - $bSettings['last']) > 172800) {
    $file = exportDB($db);
    foreach ($admins as $admin) {
        $class->api("sendDocument", [
            "chat_id" => $admin,
            "document" => new CURLFile($file),
            "caption" => "🤖 ⏳ بکاپ خودکار ۴۸ ساعته دیتابیس\n📅 " . date("Y-m-d H:i:s")
        ]);
    }
    @unlink($file);
    $bSettings['last'] = time();
    file_put_contents($backupSettingsFile, json_encode($bSettings));
}

// === بدنه اصلی ربات ===
switch (true) {
    // مرحله ارسال همگانی ادمین
    case in_array($class->fromId, $admins) && strpos($userStep, "bcast_") === 0 && $class->data === "none" && $class->text !== "none":
        $stepData = explode("_", $userStep);
        $sendMethod = $stepData[1]; 
        $target = $stepData[2]; 

        $class->call($class->chatId, "sendMessage", "⏳ درخواست شما دریافت شد. در حال شروع فرایند ارسال همگانی در پس‌زمینه...");
        $class->forward($class->msgId, $class->fromId, $target, $sendMethod);

        $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
        break;

    case strtolower($class->text) == "/start":
        $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
        $key = ['inline_keyboard' => [[['text' => " راهنما", 'callback_data' => "help"]], [['text' => " افزودن به گروه", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]];
        if (in_array($class->fromId, $admins)) {
            $key['inline_keyboard'][] = [['text' => " پنل مدیریت", 'callback_data' => "panel"]];
        } 
        $class->call($class->chatId, "sendMessage", "<tg-emoji emoji-id=\"5427168083074628963\">🤖</tg-emoji> سلام به ربات " . WELCOME_NAME . " خوش آمدید !\n\n<tg-emoji emoji-id=\"5447644880824181073\">⚙️</tg-emoji> از دکمه های زیر برای مدیریت استفاده کنید.\n\n<tg-emoji emoji-id=\"5436113877181941026\">✅</tg-emoji> موفق باشید.", $key);
        break;

    case $class->data == "help":
        $helpText = "<b><tg-emoji emoji-id=\"5397782960512444700\">📌</tg-emoji> راهنمای قابلیت‌های ربات " . WELCOME_NAME . " :</b>\n\n";
        
        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>دریافت چارت ارز دیجیتال:</b>\n";
        $helpText .= "<blockquote>کافیست نام ارز را بفرستید: BTC | ETH | SOL</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>چارت و قیمت تتر (USDT):</b>\n";
        $helpText .= "<blockquote>تتر | usdt | 100 تتر</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>تبدیل ارزهای دیجیتال:</b>\n";
        $helpText .= "<blockquote>10 btc | 0.5 eth | 1000 doge</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>طلا و نقره:</b>\n";
        $helpText .= "<blockquote>طلا | طلای ۲۴ | نقره | 10 گرم طلا | 500 سوت طلا</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>مسکوکات و سکه:</b>\n";
        $helpText .= "<blockquote>سکه | سکه امامی | ربع سکه | نیم سکه | سکه گرمی</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>نرخ‌های لحظه‌ای بازار:</b>\n";
        $helpText .= "<blockquote>نرخ | نرخ ارز | نرخ طلا</blockquote>\n\n";

        $helpText .= "<tg-emoji emoji-id=\"5206607081334906820\">✔️</tg-emoji> <b>سایر تبدیل‌ها:</b>\n";
        $helpText .= "<blockquote>100 دلار | 50 یورو | 1000 تومان | 100 استارز</blockquote>\n\n";

        $helpText .= "<b><tg-emoji emoji-id=\"5436113877181941026\">✅</tg-emoji> برای استفاده کافیست دستور مورد نظر را در چت تایپ و ارسال کنید.</b>";

        $class->call($class->chatId, "editMessageText", $helpText, [
            'inline_keyboard' => [[['text' => "- بازگشت به منو -", 'callback_data' => "back"]]]
        ]);
        $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        break;
    // --- پنل مدیریت اصلی ---
    case $class->data == "panel":
        if (in_array($class->fromId, $admins)) {
            $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
            $userCount = $db->query("SELECT COUNT(*) FROM users")->fetchColumn();
            $groupCount = $db->query("SELECT COUNT(*) FROM groups")->fetchColumn();
            
            // استفاده از ایموجی استاندارد برای جلوگیری از خطای DOCUMENT_INVALID تلگرام
            $text = "<b>⚙️ پنل مدیریت " . WELCOME_NAME . "</b>\n\n";
            $text .= "<b>📊 آمار کلی:</b>\n";
            $text .= "<blockquote>👤 کاربران: <code>$userCount</code>\n🏘 گروه‌ها: <code>$groupCount</code></blockquote>\n";
            $text .= "<b>🛠 یکی از بخش‌های زیر را انتخاب کنید:</b>\n\n";
            $text .= "<i>⏱ وضعیت در: " . date("H:i:s") . "</i>";

            $key = [
                'inline_keyboard' => [
                    [['text' => "📢 بخش ارسال همگانی", 'callback_data' => "broadcast_menu"]],
                    [['text' => "⚙️ تنظیمات سیستم", 'callback_data' => "settings_menu"]],
                    [['text' => "🔄 بروزرسانی آمار", 'callback_data' => "panel"]],
                    [['text' => "🔙 بازگشت به منو", 'callback_data' => "back"]]
                ]
            ];
            $class->call($class->chatId, "editMessageText", $text, $key);
            $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        }
        break;

    // --- منوی ارسال همگانی ---
    case $class->data == "broadcast_menu":
        if (in_array($class->fromId, $admins)) {
            $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
            $key = [
                'inline_keyboard' => [
                    [['text' => "📢 کپی به همه", 'callback_data' => "setstep_bcast_copy_all"], ['text' => "🔄 فوروارد به همه", 'callback_data' => "setstep_bcast_fwd_all"]],
                    [['text' => "👤 کپی کاربران", 'callback_data' => "setstep_bcast_copy_user"], ['text' => "👥 کپی گروه‌ها", 'callback_data' => "setstep_bcast_copy_group"]],
                    [['text' => "🔙 بازگشت به پنل", 'callback_data' => "panel"]]
                ]
            ];
            $class->call($class->chatId, "editMessageText", "<b>📢 بخش ارسال و فوروارد همگانی</b>\n\nنوع عملیات مورد نظر را انتخاب کنید:", $key);
            $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        }
        break;

    // --- منوی تنظیمات و بکاپ ---
    case $class->data == "settings_menu":
    case $class->data == "toggle_auto_backup":
        if (in_array($class->fromId, $admins)) {
            $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
            $backupFile = __DIR__ . '/backup_settings.json';
            $settings = json_decode(file_get_contents($backupFile), true);

            if ($class->data == "toggle_auto_backup") {
                $settings['auto'] = !$settings['auto'];
                file_put_contents($backupFile, json_encode($settings));
                $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id, "text" => "تغییرات ذخیره شد ✅"]);
            }

            $statusEmoji = $settings['auto'] ? "✅ روشن" : "❌ خاموش";
            $lastBackup = date("Y-m-d H:i", $settings['last']);

            $text = "<b>⚙️ تنظیمات سیستم و بکاپ‌گیری</b>\n\n";
            $text .= "<blockquote>";
            $text .= "🔄 بکاپ خودکار (۴۸ ساعته): $statusEmoji\n";
            $text .= "📅 آخرین بکاپ: <code>$lastBackup</code>";
            $text .= "</blockquote>";

            $key = [
                'inline_keyboard' => [
                    [['text' => ($settings['auto'] ? "❌ خاموش کردن بکاپ خودکار" : "✅ روشن کردن بکاپ خودکار"), 'callback_data' => "toggle_auto_backup"]],
                    [['text' => "📥 دریافت بکاپ دستی (SQL)", 'callback_data' => "db_backup_manual"]],
                    [['text' => "🔙 بازگشت به پنل", 'callback_data' => "panel"]]
                ]
            ];
            $class->call($class->chatId, "editMessageText", $text, $key);
            $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        }
        break;

    // --- تنظیم مرحله ادمین ---
    case strpos($class->data, "setstep_") === 0 && in_array($class->fromId, $admins):
        $step = str_replace("setstep_", "", $class->data);
        $db->prepare("UPDATE users SET step = :step WHERE id = :id")->execute([':step' => $step, ':id' => $class->fromId]);
        $class->call($class->chatId, "editMessageText", "<b>📥 لطفاً پیام خود را بفرستید:</b>\n<i>(پیامی که بفرستید مستقیما به کاربران ارسال میشود)</i>", [
            'inline_keyboard' => [[['text' => "❌ انصراف", 'callback_data' => "broadcast_menu"]]]
        ]);
        $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        break;

    // --- بکاپ دستی ---
    case $class->data == "db_backup_manual" && in_array($class->fromId, $admins):
        $file = exportDB($db);
        $class->api("sendDocument", [
            "chat_id" => $class->fromId,
            "document" => new CURLFile($file),
            "caption" => "<b>📁 بکاپ دستی دیتابیس استخراج شد.</b>\n📅 " . date("Y-m-d H:i:s"),
            "parse_mode" => "HTML"
        ]);
        @unlink($file);
        $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id, "text" => "فایل به پی‌وی شما ارسال شد ✅", "show_alert" => true]);
        break;

    case $class->data == "back":
        $db->prepare("UPDATE users SET step = 'none' WHERE id = :id")->execute([':id' => $class->fromId]);
        $key = ['inline_keyboard' => [[['text' => " راهنما", 'callback_data' => "help"]], [['text' => " افزودن به گروه", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]];
        if (in_array($class->fromId, $admins)) {
            $key['inline_keyboard'][] = [['text' => " پنل مدیریت", 'callback_data' => "panel"]];
        }
        $class->call($class->chatId, "editMessageText", "<tg-emoji emoji-id=\"5427168083074628963\">🤖</tg-emoji> سلام به ربات " . WELCOME_NAME . " خوش آمدید !\n\n<tg-emoji emoji-id=\"5447644880824181073\">⚙️</tg-emoji> از دکمه های زیر برای مدیریت استفاده کنید.\n\n<tg-emoji emoji-id=\"5436113877181941026\">✅</tg-emoji> موفق باشید.", $key);
        $class->api("answerCallbackQuery", ["callback_query_id" => $class->update->callback_query->id]);
        break;

    // چارت ارز دیجیتال
    case preg_match('/^[\p{L}]+$/u', $class->text) && ($klines = $class->getData($class->text, "5m", 123)) !== false && ($details = $class->coinDetails($class->text)) !== false:
        $details = (object) $details;
        $coin = strtoupper($cryptoMap[mb_strtolower($class->text)] ?? $class->text);
        $class->create(1280, 720, $klines, (float) $details->price, CHART_WATERMARK_MAIN, "$" . $coin, "5m");
        $change = ($details->change < 0) ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";

        $class->call($class->chatId, "sendPhoto", "<tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> Coin: <b>$" . $coin . "USDT\n\n╔━━━━❲ Latest Price ❳\n╚┈|<tg-emoji emoji-id=\"5409048419211682843\">💵</tg-emoji> USDT: " . $details->price . "$\n\n╔━━━━❲ 24H Info ❳\n╠┈|$change Change: " . $details->change . " %\n╠┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> High: " . $details->high . "\n╠┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> Low: " . $details->low . "\n╚┈|<tg-emoji emoji-id=\"5231200819986047254\">📊</tg-emoji> Volume: " . number_format($details->volume) . " </b>\n\n<blockquote><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> " . date("Y-m-d | H:i:s") . "</blockquote>", ['inline_keyboard' => [[['text' => "✅ 5M", 'callback_data' => "frame-5m-$coin"], ['text' => "1H", 'callback_data' => "frame-60m-$coin"], ['text' => "4H", 'callback_data' => "frame-4h-$coin"], ['text' => "1D", 'callback_data' => "frame-1d-$coin"]], [['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تغییر تایم‌فریم چارت
    case strpos($class->data, "frame-") === 0 && count($frameData = explode("-", $class->data)) >= 3 && ($klines = $class->getData($frameData[2], $frameData[1], 123)) !== false && ($details = $class->coinDetails($frameData[2])) !== false:
        $details = (object) $details;
        $frame = $frameData[1];
        $coin = $frameData[2];

        $class->create(1280, 720, $klines, (float) $details->price, CHART_WATERMARK_MAIN, "$" . $coin, $frame);
        $newName = "chart_" . time() . "_" . rand(100, 999) . ".png";
        rename($class->chartPath, $newName);

        $change = ($details->change < 0) ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";
        $domain = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'];
        $baseUri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');

        $class->call($class->chatId, "editMessageMedia", "<tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> Coin: <b>$" . $coin . "USDT\n\n╔━━━━❲ Latest Price ❳\n╚┈|<tg-emoji emoji-id=\"5409048419211682843\">💵</tg-emoji> USDT: " . $details->price . "$\n\n╔━━━━❲ 24H Info ❳\n╠┈|$change Change: " . $details->change . " %\n╠┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> High: " . $details->high . "\n╠┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> Low: " . $details->low . "\n╚┈|<tg-emoji emoji-id=\"5231200819986047254\">📊</tg-emoji> Volume: " . number_format($details->volume) . " </b>\n\n<blockquote><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> " . date("Y-m-d | H:i:s") . "</blockquote>", ['inline_keyboard' => [[['text' => ($frame == "5m" ? "✅ 5M" : "5M"), 'callback_data' => "frame-5m-$coin"], ['text' => ($frame == "60m" ? "✅ 1H" : "1H"), 'callback_data' => "frame-60m-$coin"], ['text' => ($frame == "4h" ? "✅ 4H" : "4H"), 'callback_data' => "frame-4h-$coin"], ['text' => ($frame == "1d" ? "✅ 1D" : "1D"), 'callback_data' => "frame-1d-$coin"]], [['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]], $domain . $baseUri . "/$newName");
        break;

    // چارت تتر
    case preg_match("/^(tether|usdt|تتر)$/i", $class->text) && ($klines = $class->getTetherData(60, 123)) !== false && ($details = $class->tetherPrice()) !== false:
        $details = (object) $details;
        $class->create(1280, 720, $klines, (float) $details->price, CHART_WATERMARK_TETHER, "\$USDT-IRT", "60m");
        $change = ($details->change < 0) ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";
        $class->call($class->chatId, "sendPhoto", "<tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> Coin: <b>\$USDT-IRT\n\n╔━━━━❲ Latest Price ❳\n╚┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> Toman: " . number_format($details->price) . " Toman\n\n╔━━━━❲ 24H Info ❳\n╠┈|$change Change: " . number_format($details->change) . " %\n╠┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> High: " . number_format($details->high) . " Toman\n╠┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> Low: " . number_format($details->low) . " Toman\n╚┈|<tg-emoji emoji-id=\"5231200819986047254\">📊</tg-emoji> Volume: " . number_format($details->volume) . " </b>\n\n<blockquote><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> " . date("Y-m-d | H:i:s") . "</blockquote>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // شاخص ترس و طمع
    case preg_match("/^(greed|شاخص)$/i", $class->text):
        $class->call($class->chatId, "greed", "<blockquote><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> " . date("Y-m-d | H:i:s") . "</blockquote>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تبدیل دلار فیات
    case preg_match('/^\s*(\d+(?:\.\d+)?)?\s*(usd|دلار)\s*$/iu', $class->text, $matches) && ($price = $class->tgju()) !== false:
        $price = (object) $price;
        $amount = !empty($matches[1]) ? $class->faToEnNumbers($matches[1]) : 1;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> تبدیل دلار به تومان :\n\n╔━━━━❲ $amount USD ❳\n╚┈| " . number_format($amount * $price->usd) . " Toman</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تبدیل تتر
    case preg_match('/^(\d+(\.\d+)?)[\s]*(tether|usdt|تتر)$/iu', $class->text, $matches) && ($price = $class->tetherPrice()) !== false:
        $price = (object) $price;
        $amount = $class->faToEnNumbers($matches[1]);
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> تبدیل تتر به تومان :\n\n╔━━━━❲<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> $amount USDT ❳\n╚┈| " . number_format((float) $amount * (float) $price->price) . " Toman</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تبدیل تومان به تتر و دلار
    case preg_match('/^(\d+(\.\d+)?)[\s]*(Toman|تومن|تومان)$/iu', $class->text, $matches) && ($price = $class->tetherPrice()) !== false && ($Usdprice = $class->tgju()) !== false:
        $price = (object) $price;
        $Usdprice = (object) $Usdprice;
        $amount = $class->faToEnNumbers($matches[1]);
        $tetherVal = (float) $amount / (float) $price->price;
        $usdVal = (float) $amount / (float) $Usdprice->usd;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> تبدیل تومان به تتر و دلار :\n\n╔━━━━❲ " . number_format($amount) . " Toman ❳\n╠┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($tetherVal, 2) . " USDT\n╚┈|<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> " . round($usdVal, 2) . " USD</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تبدیل تومان به کریپتو
    case preg_match('/^(\d+)(?:\s)?(تومن|تومان|Toman)\s([\p{L}]+)$/iu', $class->text, $m) && ($price = $class->tetherPrice()) !== false && ($details = $class->coinDetails($m[3])) !== false:
        $details = (object) $details;
        $amount = $class->faToEnNumbers($m[1]);
        $price = (object) $price;
        $coin = strtoupper($cryptoMap[mb_strtolower($m[3])] ?? $m[3]);
        $toman = (float) $amount / (float) $price->price;
        $result = round((float) $toman / (float) $details->price, 4);
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل تومان به $coin :\n\n╔━━━━❲ " . number_format($amount) . " Toman ❳\n╠┈|<tg-emoji emoji-id=\"5409048419211682843\">💵</tg-emoji> $result $coin\n╚┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($toman, 2) . " USDT</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // استارز تلگرام
    case preg_match('/^\s*(\d+(?:\.\d+)?)?\s*(stars?|star|استار|استارز)\s*$/iu', $class->text, $matches) && ($toman = $class->tetherPrice()) !== false && ($stars = $class->starsPrice()) !== false && ($details = $class->coinDetails("TON")) !== false:
        $stars = (object) $stars;
        $toman = (object) $toman;
        $details = (object) $details;
        $amount = !empty($matches[1]) ? $class->faToEnNumbers($matches[1]) : 1;
        $result = $amount * $stars->price;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل استارز به :\n\n╔━━━━❲<tg-emoji emoji-id=\"6033040268909877380\">⭐</tg-emoji> $amount STARS ❳\n╠┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($result, 4) . " $\n╠┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($result * $toman->price) . " Toman\n╚┈|<tg-emoji emoji-id=\"6032952342339395168\">🪙</tg-emoji> " . round($result / $details->price, 4) . " Ton</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // تبدیل کریپتو به فیات/تومان
    case preg_match('/^(\d+(?:\.\d+)?)\s*([\p{L}]+)$/iu', $class->text, $matches) && ($price = $class->tetherPrice()) !== false && ($details = $class->coinDetails($matches[2])) !== false:
        $price = (object) $price;
        $details = (object) $details;
        $amount = $class->faToEnNumbers($matches[1]);
        $coin = strtoupper($cryptoMap[mb_strtolower($matches[2])] ?? $matches[2]);
        $result = (float) $amount * (float) $details->price;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل $coin به :\n\n╔━━━━❲ $amount $coin ❳\n╠┈|<tg-emoji emoji-id=\"5409048419211682843\">💵</tg-emoji> $result $\n╚┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($result * (float) $price->price) . " Toman</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // طلای 24 عیار
    case preg_match('/^(?:(\d+(?:\.\d+)?)\s*(گرم|سوت)\s*(?:طلای 24|طلای ۲۴|gold 24)|(?:طلای 24|طلای ۲۴|gold 24))$/iu', $class->text, $matches) && ($gold24 = $class->gold24Price()) !== false && ($price = $class->tetherPrice()) !== false:
        $gold24 = (object) $gold24;
        $price = (object) $price;
        $amount = isset($matches[1]) ? $class->faToEnNumbers($matches[1]) : 1;
        $unit = $matches[2] ?? "گرم";
        if ($unit === "سوت") { $amount /= 1000; }
        $change = ($gold24->change == "low") ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";
        $result = (float) $amount * (float) $gold24->price;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل طلای 24 عیار به تومان و تتر :\n\n╗━━━━❲ $amount $unit طلای 24 عیار ❳\n╣┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($result) . " تومان\n╝┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($result / $price->price, 4) . " تتر\n\n╗━━━━❲ تغییرات ❳\n╣┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> سقف " . number_format($gold24->high) . " تومان\n╣┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> کف " . number_format($gold24->low) . " تومان\n╝┈|$change تغییر " . number_format($gold24->priceChange) . " تومان ( " . $gold24->perChange . "% )</b>\n\n<blockquote><i><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji>  بروزرسانی \n" . $gold24->update . "</i></blockquote>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // طلا
    case preg_match('/^(?:(\d+(?:\.\d+)?)\s*(گرم|سوت)\s*(?:طلا|gold)?|(?:طلا|gold))$/iu', $class->text, $matches) && ($gold = $class->goldPrice()) !== false && ($price = $class->tetherPrice()) !== false:
        $gold = (object) $gold;
        $price = (object) $price;
        $amount = isset($matches[1]) ? $class->faToEnNumbers($matches[1]) : 1;
        $unit = $matches[2] ?? "گرم";
        if ($unit === "سوت") { $amount /= 1000; }
        $change = ($gold->change == "low") ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";
        $result = (float) $amount * (float) $gold->price;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل طلا به تومان و تتر :\n\n╗━━━━❲ $amount گرم طلای 18 عیار ❳\n╣┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($result) . " تومان\n╝┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($result / $price->price, 4) . " تتر\n\n╗━━━━❲ تغییرات ❳\n╣┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> سقف " . number_format($gold->high) . " تومان\n╣┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> کف " . number_format($gold->low) . " تومان\n╝┈|$change تغییر " . number_format($gold->priceChange) . " تومان ( " . $gold->perChange . "% )</b>\n\n<blockquote><i><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji>  بروزرسانی \n" . $gold->update . "</i></blockquote>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // نقره
    case preg_match('/^(?:(\d+(?:\.\d+)?)\s*(گرم|سوت)\s*(?:نقره|silver)?|(?:نقره|silver))$/iu', $class->text, $matches) && ($silver = $class->tgju()) !== false && ($price = $class->tetherPrice()) !== false:
        $silver = (object) $silver;
        $price = (object) $price;
        $amount = isset($matches[1]) ? $class->faToEnNumbers($matches[1]) : 1;
        $unit = $matches[2] ?? "گرم";
        if ($unit === "سوت") { $amount /= 1000; }
        $result = (float) $amount * (float) $silver->silver;
        $class->call($class->chatId, "sendMessage", "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> تبدیل نقره به تومان و تتر :\n\n╗━━━━❲ $amount گرم نقره 999 ❳\n╣┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($result) . " تومان\n╝┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . round($result / $price->price, 4) . " تتر</b>", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    // نرخ سایر ارزها
    case preg_match("/^(?:نرخ(?:\s*ارز)?|(?:(\d+)\s*)?(یورو|درهم|پوند|لیر|فرانک|یوان|ین|وون|کانادا|استرالیا|روبل|روپیه|دینار|ریال|کرون|eur|aed|gbp|try|chf|cny|jpy|krw|cad|aud|rub|inr|kwd|sar|qar|sek|nok))$/iu", $class->text, $parts) && ($fiat = $class->fiat()) !== false:
        $fiat = (object) $fiat;
        $class->call($class->chatId, "sendMessage", "╗━━━━❲ نرخ ارز در بازار آزاد ❳\n╣┈|دلار 🇺🇸: " . number_format($fiat->usd) . " تومان\n╣┈|یورو 🇪🇺: " . number_format($fiat->eur) . " تومان\n╣┈|درهم امارات 🇦🇪: " . number_format($fiat->aed) . " تومان\n╣┈|پوند انگلیس 🇬🇧: " . number_format($fiat->gbp) . " تومان\n╣┈|لیر ترکیه 🇹🇷: " . number_format($fiat->try) . " تومان\n╣┈|فرانک سوییس 🇨🇭: " . number_format($fiat->chf) . " تومان\n╣┈|یوان چین 🇨🇳: " . number_format($fiat->cny) . " تومان\n╝┈|ین ژاپن 🇯🇵: " . number_format($fiat->jpy) . " تومان", ['inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]]);
        break;

    
   
   // ۱. لیست کلی نرخ طلا و مسکوکات (وقتی کاربر فقط میگه "سکه" یا "نرخ طلا")
    case preg_match("/^(نرخ طلا|سکه|مسکوکات)$/iu", $class->text) && ($gold = $class->goldRates()) !== false:
        $text = "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> نرخ لحظه‌ای طلا و سکه (تومان):</b>\n\n";
        $text .= "<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> <b>طلای ۱۸ عیار:</b> " . number_format($gold['gold18']) . "\n";
        $text .= "<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> <b>طلای ۲۴ عیار:</b> " . number_format($gold['gold24']) . "\n";
        $text .= "--------------------------\n";
        $text .= "<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> <b>سکه امامی:</b> " . number_format($gold['emami']) . "\n";
        $text .= "<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> <b>سکه بهار آزادی:</b> " . number_format($gold['bahar']) . "\n";
        $text .= "<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> <b>نیم سکه:</b> " . number_format($gold['nim']) . "\n";
        $text .= "<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> <b>ربع سکه:</b> " . number_format($gold['rob']) . "\n";
        $text .= "<tg-emoji emoji-id=\"6030738741964840417\">🪙</tg-emoji> <b>سکه گرمی:</b> " . number_format($gold['gerami']) . "\n\n";
        $text .= "<blockquote><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> " . date("H:i:s") . "</blockquote>";

        $class->call($class->chatId, "sendMessage", $text, [
            'inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]
        ]);
        break;

    // ۲. پردازش اختصاصی انواع سکه و طلا (وقتی کاربر اسم دقیق سکه رو میگه یا تعداد میده)
    case preg_match('/^(?:(\d+(?:\.\d+)?)\s*)?(سکه امامی|سکه بهار آزادی|سکه بهار|نیم سکه|ربع سکه|سکه گرمی|طلای ۲۴|طلای 24|طلا|gold)$/iu', $class->text, $matches):
        // اگر تعداد وارد نشده بود، پیش‌فرض 1 در نظر می‌گیره
        $amount = (!empty($matches[1])) ? $class->faToEnNumbers($matches[1]) : 1;
        $input = mb_strtolower($matches[2]);
        
        // نقشه تبدیل متن کاربر به کلیدهای API (کلمات مخفف هم اضافه شد)
        $itemsMap = [
            'سکه امامی' => ['key' => 'sekee', 'name' => 'سکه امامی'],
            'سکه بهار آزادی' => ['key' => 'sekeb', 'name' => 'سکه بهار آزادی'],
            'سکه بهار' => ['key' => 'sekeb', 'name' => 'سکه بهار آزادی'], // حل مشکل کلمه "سکه بهار"
            'نیم سکه' => ['key' => 'nim', 'name' => 'نیم سکه'],
            'ربع سکه' => ['key' => 'rob', 'name' => 'ربع سکه'],
            'سکه گرمی' => ['key' => 'gerami', 'name' => 'سکه گرمی'],
            'طلای ۲۴' => ['key' => 'geram24', 'name' => 'گرم طلای ۲۴ عیار'],
            'طلای 24' => ['key' => 'geram24', 'name' => 'گرم طلای ۲۴ عیار'],
            'طلا' => ['key' => 'geram18', 'name' => 'گرم طلای ۱۸ عیار'],
            'gold' => ['key' => 'geram18', 'name' => 'گرم طلای ۱۸ عیار'],
        ];

        $target = $itemsMap[$input];
        
        // دریافت دیتا از توابعی که قبلا ساختیم
        $details = $class->getTgjuDetail($target['key']);
        $priceTether = $class->tetherPrice();

        if ($details !== false && $priceTether !== false) {
            $details = (object) $details;
            $priceTether = (object) $priceTether;
            
            // محاسبه قیمت کل و تتر
            $totalPrice = (float) $amount * (float) $details->price;
            $resultTether = round($totalPrice / $priceTether->price, 4);
            
            // تشخیص ایموجی پرمیوم بالا و پایین رفتن قیمت
            $changeEmoji = ($details->change == "low") ? "<tg-emoji emoji-id=\"5447183459602669338\">🔽</tg-emoji>" : "<tg-emoji emoji-id=\"5449683594425410231\">🔼</tg-emoji>";

            // ساختن متن نهایی
            $text = "<b><tg-emoji emoji-id=\"6219727185708582935\">⚜</tg-emoji> جزئیات قیمت :\n\n";
            $text .= "╗━━━━❲ $amount " . $target['name'] . " ❳\n";
            $text .= "╣┈|<tg-emoji emoji-id=\"5269488357485852697\">🇮🇷</tg-emoji> " . number_format($totalPrice) . " تومان\n";
            $text .= "╝┈|<tg-emoji emoji-id=\"5465546600866652008\">🪙</tg-emoji> " . $resultTether . " تتر\n\n";
            $text .= "╗━━━━❲ تغییرات امروز (واحد) ❳\n";
            $text .= "╣┈|<tg-emoji emoji-id=\"4990298741463319592\">🟢</tg-emoji> سقف: " . number_format($details->high) . " تومان\n";
            $text .= "╣┈|<tg-emoji emoji-id=\"4926956800005112527\">🔴</tg-emoji> کف: " . number_format($details->low) . " تومان\n";
            $text .= "╝┈|$changeEmoji تغییر: " . number_format($details->priceChange) . " تومان ( " . $details->perChange . "% )</b>\n\n";
            $text .= "<blockquote><i><tg-emoji emoji-id=\"5413704112220949842\">⏰</tg-emoji> بروزرسانی:\n" . $details->update . "</i></blockquote>";

            $class->call($class->chatId, "sendMessage", $text, [
                'inline_keyboard' => [[['text' => "افزودن به گروه ", 'url' => "https://t.me/" . BOT_USERNAME . "?startgroup=new"]]]
            ]);
        }
        break;



}
?>