step == 'auth') { if ($currentUser->last_request_time && !empty($currentUser->last_request_time)) { $current_time = new DateTime(); $last_request_time = new DateTime($currentUser->last_request_time); $interval = $current_time->diff($last_request_time); $minutes_diff = $interval->i; if ($minutes_diff < 5) { $remaining_time = 5 - $minutes_diff; $response_text = "⏳ *زمان انتظار*\n\n"; $response_text .= "شما می‌توانید فقط هر 5 دقیقه یکبار کد جدید دریافت کنید.\n\n"; $response_text .= "⏰ زمان باقیمانده: $remaining_time دقیقه\n\n"; $response_text .= "لطفاً کمی صبر کنید و سپس دوباره تلاش کنید."; $bot->sendMessage($from_id, $response_text); die; } } if (substr($phone_number, 0, 2) != 98) { $bot->sendMessage($from_id, 'برای ارسال شماره خود از دکمه پایین استفاده کنید 👇🏻'); die; } $formatted_phone_number = '0' . substr($phone_number, 2); $query = "UPDATE `users` SET `phone_number` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$formatted_phone_number, $from_id]); $keyboard = json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => '♻️ درخواست مجدد کد']] ] ]); $response = $sms->sendVerificationCode($formatted_phone_number, 106426, $currentUser->verify_code); if (!$response['success']) { $error_message = isset($response['error']) ? $response['error'] : ($response['response']['message'] ?? 'خطای نامشخص در ارسال پیامک'); $bot->sendMessage($from_id, "❌ ارسال پیامک با خطا مواجه شد:\n" . $error_message, null, $message_id); die; } $response_text = "✅ *کد تایید ارسال شد*\n\n"; $response_text .= "یک کد 5 رقمی به شماره `$formatted_phone_number` ارسال شد.\n\n"; $response_text .= "💡 *لطفاً کد دریافتی را به درستی وارد کنید:*\n"; $response_text .= "• کد 5 رقمی است\n"; $response_text .= "• کد فقط 5 دقیقه معتبر است\n"; $response_text .= "• در صورت عدم دریافت، می‌توانید مجدداً درخواست دهید"; $query = "UPDATE `users` SET `last_request_time` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([date('Y-m-d H:i:s'), $from_id]); setStep($from_id, 'wait-otp'); $bot->sendMessage($from_id, $response_text, $keyboard, $message_id); die; } if ($text == '♻️ درخواست مجدد کد' && $currentUser->phone_number) { $current_time = new DateTime(); $last_request_time = new DateTime($currentUser->last_request_time); $interval = $current_time->diff($last_request_time); $minutes_diff = $interval->i; if ($minutes_diff >= 5) { setStep($from_id, 'wait-otp'); $otp = random_int(10000, 99999); $query = "UPDATE `users` SET `verify_code` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$otp, $from_id]); $query = "UPDATE `users` SET `last_request_time` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([date('Y-m-d H:i:s'), $from_id]); $sms->sendVerificationCode($currentUser->phone_number, 106426, $currentUser->verify_code); $response_text = "✅ *کد جدید ارسال شد*\n\n"; $response_text .= "کد جدید برای شما ارسال گردید.\n\n"; $response_text .= "💡 *لطفاً کد دریافتی را به درستی وارد کنید:*\n"; $response_text .= "• کد 5 رقمی است\n"; $response_text .= "• کد فقط 5 دقیقه معتبر است"; $bot->sendMessage($from_id, $response_text, $keyboard); $query = "UPDATE `users` SET `last_request_time` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([date('Y-m-d H:i:s'), $from_id]); } else { $remaining_time = 5 - $minutes_diff; $response_text = "⏳ *زمان انتظار*\n\n"; $response_text .= "شما می‌توانید فقط هر 5 دقیقه یکبار کد جدید دریافت کنید.\n\n"; $response_text .= "⏰ زمان باقیمانده: $remaining_time دقیقه\n\n"; $response_text .= "لطفاً کمی صبر کنید و سپس دوباره تلاش کنید."; $bot->sendMessage($from_id, $response_text); } die; } if ($currentUser->step == 'wait-otp') { $keyboard = json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => 'انصراف']] ] ]); if ($text == $currentUser->verify_code) { $otp = rand(10000, 99999); $query = "UPDATE `users` SET `verify_code` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$otp, $from_id]); $response_text = "✅ *کد تایید صحیح است*\n\n"; $response_text .= "✏️ لطفاً نام و نام خانوادگی خود را وارد کنید:\n\n"; $response_text .= "💡 *نکته:* نام باید مطابق با اطلاعات هویتی شما باشد"; $bot->sendMessage($from_id, $response_text, $keyboard); setStep($from_id, 'wait-fullname'); die; } else { $bot->sendMessage($from_id, 'کد وارد شده صحیح نمیباشد! لطفا مجددا سعی کنید:'); } } if ($currentUser->step == 'wait-fullname') { $keyboard = json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => 'انصراف']] ] ]); $query = "UPDATE `users` SET `full_name` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$text, $from_id]); $response_text = "✅ *نام ثبت شد*\n\n"; $response_text .= "💯 لطفاً کد ملی خود را وارد کنید:\n\n"; $response_text .= "⚠️ *توجه مهم:*\n"; $response_text .= "کد ملی وارد شده باید با کد ملی مالک سیمکارت یکسان باشد."; $bot->sendMessage($from_id, $response_text, $keyboard); setStep($from_id, 'wait-national-code'); die; } if ($currentUser->step == 'wait-national-code') { if (!preg_match('/^\d{10}$/', $text)) { $bot->editMessage($from_id, "کد ملی وارد شده معتبر نیست. لطفاً یک کد ملی 10 رقمی وارد کنید.", $message_id + 1); die; } $query = "SELECT * FROM `users` WHERE `national_code` = ? AND `auth_level` <> 0"; $stmt = $db->prepare($query); $stmt->execute([$text]); $result = $stmt->fetch(); if ($result) { $bot->sendMessage($from_id, '⚠️ این کد ملی قبلاً ثبت شده است! لطفاً یک کد ملی دیگر وارد کنید.', message_id: $message_id); die; } $bot->sendMessage($from_id, "*درحال استعلام سیمکارت ...*", message_id: $message_id); $checkResponse = $apiRequest->checkMobileNumber($text, $currentUser->phone_number); if ($checkResponse->matched == 0) { $bot->editMessage($from_id, "*❌ کد ملی وارد شده با کد ملی مالک سیمکارت همخوانی ندارد.*\n\nلطفاً کد ملی صحیح را وارد کنید:", $message_id + 1); die; } $keyboard = json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => 'انصراف']] ] ]); $query = "UPDATE `users` SET `national_code` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$text, $from_id]); $response_text = "✅ *کد ملی تایید شد*\n\n"; $response_text .= "📅 لطفاً تاریخ تولد خود را وارد کنید:\n\n"; $response_text .= "📝 *فرمت:* `1379/12/02`\n"; $response_text .= "• سال: 4 رقم\n"; $response_text .= "• ماه: 2 رقم\n"; $response_text .= "• روز: 2 رقم"; $bot->editMessage($from_id, $response_text, $message_id + 1); setStep($from_id, 'wait-birthday'); die; } if ($currentUser->step == 'wait-birthday') { $keyboard = json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => 'انصراف']] ] ]); $query = "UPDATE `users` SET `birthday` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$text, $from_id]); $response_text = "✅ *تاریخ تولد ثبت شد*\n\n"; $response_text .= "🧔🏻‍♂️ لطفاً نام پدر خود را وارد کنید:"; $bot->sendMessage($from_id, $response_text, $keyboard); setStep($from_id, 'wait-father-name'); die; } if ($currentUser->step == 'wait-father-name') { $query = "UPDATE `users` SET `father_name` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$text, $from_id]); $bot->sendMessage($from_id, '*درحال اعتبارسنجی اطلاعات ...*', message_id: $message_id); $result = $apiRequest->compareWithNationalRegistry($currentUser->national_code, str_replace('/', '', $currentUser->birthday), $currentUser->full_name); if ($result <= 80) { $bot->editMessage($from_id, "خطا در استعلام اطلاعات!\nاطلاعات هویتی وارد شده صحیح نمیباشد\n\nلطفاً مجدداً ربات را /start کرده و فرایند احراز هویت را تکمیل نمایید.", $message_id + 1); die; } $channel = getSettingsBot('base_auth_channel')->value_ ?? 0; $log_text = "📝 *احرازهویت پایه جدید*\n\n"; $log_text .= "👤 نام کامل: " . $currentUser->full_name . "\n"; $log_text .= "🆔 کد ملی: " . $currentUser->national_code . "\n"; $log_text .= "🎂 تاریخ تولد: " . $currentUser->birthday . "\n"; $log_text .= "🧔🏻‍♂️ نام پدر: " . $text . "\n"; $log_text .= "📱 شماره تلفن: " . $currentUser->phone_number . "\n"; $log_text .= "📅 زمان ارسال: " . jdate("Y/m/d - H:i:s", strtotime(date("Y-m-d H:i:s")), tr_num: 'en') . "\n"; $bot->sendMessage($channel, $log_text); $secess_verify = "✅ *احراز هویت تکمیل شد*"; $response_text = "🎉 *احراز هویت با موفقیت انجام شد*\n\n"; $response_text .= "✅ حساب کاربری شما تایید شد و آماده استفاده است.\n\n"; $response_text .= "🔐 *سطح دسترسی:*\n"; $response_text .= "• دسترسی به تمام قسمت‌های ربات فعال است\n"; $response_text .= "• امکان خرید ووچر پس از ارتقا سطح فراهم می‌شود\n\n"; $response_text .= "💡 برای استفاده از تمامی امکانات ربات، از دکمه‌های زیر استفاده کنید:"; $query = "UPDATE `users` SET `auth_level` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([1, $from_id]); setStep($from_id, 'home'); $bot->editMessage($from_id, $secess_verify, $message_id + 1); $bot->sendMessage($from_id, $response_text, $main_keyboard); } # --------------------< Upgrade Account >-------------------- # if ($text == '🔓 ارتقا سطح کاربری' && $currentUser->auth_level != 0) { $auth_level = $currentUser->auth_level; switch ($auth_level) { case 1: $query = "SELECT * FROM `documents` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$from_id]); $response = $stmt->fetch(); if (!$response) { $query = "INSERT INTO `documents` (`chat_id`) VALUES (?)"; $stmt = $db->prepare($query); $stmt->execute([$from_id]); } $response_text = " *🚀 سطح کاربری شما $auth_level می‌باشد. در حال ارتقا حساب خود به سطح 2 هستید ...* 📑 لطفاً کارت ملی و کارت بانکی خود را کنار هم گذاشته و مطابق عکس نمونه، دست‌نوشته‌ای با متن زیر بنویسید: (در صورت نداشتن کارت ملی، می‌توانید از شناسنامه عکس‌دار، کارت پایان خدمت یا گواهینامه معتبر استفاده کنید) * جهت خرید از صرافی تلگرامی فست اکس اینجانب ..... با کد ملی ..... اعلام می‌دارم که به هیچ عنوان از افراد ناشناس در واتساپ، تلگرام و سایر پیام‌رسان‌ها حتی با عنوان آگهی استخدام و کسب درآمد، ریال یا پول جهت خرید رمزارز دریافت نخواهم نمود. زیرا پول سرقتی و دزدی برایم واریز می‌شود و مشکلات پولشویی و قضائی برایم پیش خواهد آمد. نام و نام خانوادگی: کد ملی: امضا و تاریخ:* "; $bot->sendPhoto($from_id, "https://fastexshop.ir/exchange/images/auth1.jpg", $response_text, $back_keyboard); setStep($from_id, 'auth-handwritten-pic'); break; case 2: $bot->sendPhoto($from_id, "https://fastexshop.ir/exchange/images/auth2.jpg", "*🚀 سطح کاربری شما $auth_level می‌باشد. در حال ارتقا حساب خود به سطح 3 هستید ...*\n\n📸 لطفا عکس سلفی طبق توضیحات بگیرید و بفرستید:", $back_keyboard); setStep($from_id, 'auth-selfie-pic'); break; case 3: $bot->sendMessage($from_id, "*🚀 سطح کاربری شما $auth_level می‌باشد. در حال ارتقا حساب خود به سطح 4 هستید ...*\n\nآیا از ارسال درخواست برای ارتقا به سطح 4 مطمئن هستید؟", json_encode([ 'resize_keyboard' => true, 'keyboard' => [ [['text' => 'تایید ارتقا سطح 4']], [['text' => 'بازگشت']] ] ])); setStep($from_id, 'auth-to-4'); break; case 4: $bot->sendMessage($from_id, "حساب کاربری شما احراز کامل میباشد."); break; default: $bot->sendMessage($from_id, '🎉 سطح کاربری شما برای ارتقا به سطح بالاتر آماده است.'); break; } die; } if ($currentUser->step == 'auth-handwritten-pic') { if (!$photo) { $bot->sendMessage($from_id, "❌ لطفا فقط عکس ارسال کنید: "); die; } $query = "UPDATE `documents` SET `handwritten` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$photo_id, $from_id]); $bot->sendMessage($from_id, "*✅ عکس دست نوشته شما دریافت شد.*\n\nاطلاعات شما برای ارتقا سطح به ادمین ارسال شد...📝", $main_keyboard); setStep($from_id, 'home'); $full_name = $currentUser->full_name; $national_code = $currentUser->national_code; $birthday = $currentUser->birthday; $phone_number = $currentUser->phone_number; $father_name = $currentUser->father_name; $caption = "👆🏻 درخواست احراز هویت جدید برای *$full_name*\n\n"; $caption .= "💎 *سطح درخواستی:* 2\n"; $caption .= "📱 *شماره تماس:* $phone_number\n"; $caption .= "🆔 *کد ملی:* $national_code\n"; $caption .= "🎂 *تاریخ تولد:* $birthday\n"; $caption .= "🧔🏻‍♂️ *نام پدر:* $father_name\n"; $query = "SELECT * FROM `documents` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$from_id]); $doc = $stmt->fetch(); $channel = getSettingsBot('general_auth_channel')->value_ ?? 0; $bot->sendPhoto($channel, $doc->handwritten, '.'); $bot->sendMessage($channel, $caption, json_encode([ 'inline_keyboard' => [ [['text' => 'تایید مدارک و ارتقا سطح', 'callback_data' => "auth-accept-2-" . $from_id]], [['text' => 'عدم تایید مدارک', 'callback_data' => "auth-reject-2-" . $from_id]] ] ])); } if ($photo && $currentUser->step == 'auth-selfie-pic') { $query = "UPDATE `documents` SET `selfie` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$photo_id, $from_id]); $bot->sendMessage($from_id, "*✅ عکس سلفی شما دریافت شد.*\n\nاطلاعات شما برای ارتقا سطح به ادمین ارسال شد...📝", $main_keyboard); setStep($from_id, 'home'); $full_name = $currentUser->full_name; $national_code = $currentUser->national_code; $birthday = $currentUser->birthday; $phone_number = $currentUser->phone_number; $father_name = $currentUser->father_name; $caption = "👆🏻 درخواست احراز هویت جدید برای *$full_name*\n\n"; $caption .= "💎 *سطح درخواستی:* 3\n"; $caption .= "📱 شماره تماس: $phone_number\n"; $caption .= "🆔 کد ملی: $national_code\n"; $caption .= "🎂 تاریخ تولد: $birthday\n"; $caption .= "🧔🏻‍♂️ نام پدر: $father_name\n"; $query = "SELECT * FROM `documents` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$from_id]); $doc = $stmt->fetch(); $channel = getSettingsBot('general_auth_channel')->value_ ?? 0; $bot->sendPhotoGroup($channel, [$doc->selfie], '.'); $bot->sendMessage($channel, $caption, json_encode([ 'inline_keyboard' => [ [['text' => 'تایید مدارک و ارتقا سطح', 'callback_data' => "auth-accept-3-" . $from_id]], [['text' => 'عدم تایید مدارک', 'callback_data' => "auth-reject-3-" . $from_id]] ] ])); die; } if ($text == 'تایید ارتقا سطح 4' && $currentUser->auth_level == 3) { $bot->sendMessage($from_id, "*✅ درخواست شما دریافت شد.*\n\nاطلاعات شما برای ارتقا سطح به ادمین ارسال شد...📝", $main_keyboard); setStep($from_id, 'home'); $full_name = $currentUser->full_name; $national_code = $currentUser->national_code; $birthday = $currentUser->birthday; $phone_number = $currentUser->phone_number; $father_name = $currentUser->father_name; $caption = "⚡️ درخواست احراز هویت جدید برای *$full_name*\n\n"; $caption .= "💎 *سطح درخواستی:* 4\n"; $caption .= "📱 شماره تماس: $phone_number\n"; $caption .= "🆔 کد ملی: $national_code\n"; $caption .= "🎂 تاریخ تولد: $birthday\n"; $caption .= "🧔🏻‍♂️ نام پدر: $father_name\n"; $channel = getSettingsBot('general_auth_channel')->value_ ?? 0; $bot->sendMessage($channel, $caption, json_encode([ 'inline_keyboard' => [ [['text' => 'تایید درخواست و ارتقا سطح', 'callback_data' => "auth-accept-4-" . $from_id]], [['text' => 'عدم تایید درخواست', 'callback_data' => "auth-reject-4-" . $from_id]] ] ])); die; } if (strpos($data, 'auth-accept') !== false) { $result = explode('-', $data); $level = $result[2]; $user_id = $result[3]; $query = "UPDATE `users` SET `auth_level` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$level, $user_id]); $channel = getSettingsBot('general_auth_channel')->value_ ?? 0; $bot->editMessageReplyMarkup($channel, $message_id, json_encode([ 'inline_keyboard' => [ [['text' => 'وضعیت: تایید شد ✅', 'callback_data' => '0']] ] ])); $bot->sendMessage($user_id, "🎉 مدارک شما تایید شد و سطح احراز هویت شما به *$level* ارتقا یافت. اکنون می‌توانید از امکانات بیشتری استفاده کنید."); die; } if (strpos($data, 'auth-reject') !== false) { $result = explode('-', $data); $level = $result[2]; $user_id = $result[3]; $channel = getSettingsBot('general_auth_channel')->value_ ?? 0; $bot->editMessageReplyMarkup($channel, $message_id, json_encode([ 'inline_keyboard' => [ [['text' => 'وضعیت: رد شد ❌', 'callback_data' => '0']] ] ])); $bot->sendMessage($user_id, "❌ مدارک شما برای ارتقا سطح رد شد. لطفاً با پشتیبانی تماس بگیرید برای اطلاعات بیشتر."); die; }