logged_in == 0) { $responseText = "*گام اول ثبت‌نام 🚀* برای اینکه هر زمان نیاز داشتی به حسابت دسترسی داشته باشی، ابتدا باید یک *نام کاربری* برای خودت انتخاب کنی. 🔤 لطفاً یک نام کاربری شامل *حروف و اعداد انگلیسی* وارد کن. ⚠️ توجه: نام کاربری نباید *تکراری* باشد. "; setStep($from_id, "register-enter:username"); sendMessage($from_id, $responseText, $backToEnterKeyboard); die; } if ($user->step == "register-enter:username" && $user->logged_in == 0) { $username = trim($text); if (!preg_match('/^[a-zA-Z0-9]+$/', $username)) { $errorText = "⚠️ *نام کاربری نامعتبر است*\n\nنام کاربری باید فقط شامل *حروف انگلیسی (A–Z)* و *اعداد* باشد.\n\n🔁 لطفاً دوباره یک نام کاربری صحیح وارد کن:"; sendMessage($from_id, $errorText); die; } $checkUsernameQuery = "SELECT * FROM `accounts` WHERE `username` = ?"; $stmt = $pdo->prepare($checkUsernameQuery); $stmt->execute([$username]); $checkUsernameExist = $stmt->fetch(); if ($checkUsernameExist) { $errorText = "❌ *این نام کاربری قبلاً ثبت شده است*\n\nلطفاً یک نام کاربری *دیگر* انتخاب کن که قبلاً استفاده نشده باشد.\n\n🔁 دوباره وارد کن:"; sendMessage($from_id, $errorText); die; } $queryCheckUsername = "SELECT `id` FROM `accounts` WHERE `username` = ?"; $stmtCheckUsername = $pdo->prepare($queryCheckUsername); $stmtCheckUsername->execute([$username]); $usernameExists = $stmtCheckUsername->fetch(); $responseText = "❌ *این نام کاربری قبلاً ثبت شده است* یک نام کاربری *دیگر* وارد کن. 🔁 دوباره تلاش کن:"; if ($usernameExists) { sendMessage($from_id, $responseText); die; } setStep($from_id, "register-enter:password:$username"); $responseText = "🔐 عالیه! نام کاربری *$username* ذخیره شد. حالا یک *رمز عبور* وارد کن که فقط شامل حروف و اعداد انگلیسی باشد:"; sendMessage($from_id, $responseText); die; } if (strpos($user->step, "register-enter:password:") === 0 && $user->logged_in == 0) { $stepParts = explode("register-enter:password:", $user->step); $username = trim($stepParts[1]); $password = trim($text); $invalidPassword = !preg_match('/^[a-zA-Z0-9]+$/', $password); if ($invalidPassword) { $errorText = "⚠️ *رمز عبور نامعتبر است* رمز عبور باید فقط شامل *حروف انگلیسی (A–Z)* و *اعداد* باشد. 🔁 لطفاً دوباره یک رمز عبور معتبر وارد کن:"; sendMessage($from_id, $errorText); die; } setStep($from_id, "register-enter:password-confirm:$username:$password"); $responseText = "🔁 خیلی خوب! حالا برای تأیید، *رمز عبور* وارد شده را دوباره تایپ کن:"; sendMessage($from_id, $responseText); die; } if (strpos($user->step, "register-enter:password:") === 0 && $user->logged_in == 0) { $stepParts = explode("register-enter:password:", $user->step); $username = trim($stepParts[1]); $password = trim($text); $invalidPassword = !preg_match('/^[a-zA-Z0-9]+$/', $password); if ($invalidPassword) { $errorText = "⚠️ *رمز عبور نامعتبر است* رمز عبور باید فقط شامل *حروف انگلیسی (A–Z)* و *اعداد* باشد. 🔁 لطفاً دوباره یک رمز عبور معتبر وارد کن:"; sendMessage($from_id, $errorText); die; } setStep($from_id, "register-enter:password-confirm:$username:$password"); $responseText = "🔁 خیلی خوب! حالا برای تأیید، *رمز عبور* وارد شده را دوباره تایپ کن:"; sendMessage($from_id, $responseText); die; } if (strpos($user->step, "register-enter:password-confirm:") === 0 && $user->logged_in == 0) { $stepData = str_replace("register-enter:password-confirm:", "", $user->step); [$username, $password] = explode(":", $stepData); $repeatPassword = trim($text); if ($repeatPassword !== $password) { $errorText = "❌ *رمز عبورها یکسان نیستند* لطفاً رمز عبور را دوباره تکرار کن:"; sendMessage($from_id, $errorText); die; } $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $insertQuery = "INSERT INTO `accounts` (`telegram_id`, `username`, `password`) VALUES (?, ?, ?)"; $stmtInsert = $pdo->prepare($insertQuery); $stmtInsert->execute([$from_id, $username, $hashedPassword]); $queryUpdateLogin = "UPDATE `users` SET `logged_in` = 1, `login_username` = ? WHERE `telegram_id` = ?"; $stmtLoginUpdate = $pdo->prepare($queryUpdateLogin); $stmtLoginUpdate->execute([$username, $from_id]); setStep($from_id, "home"); $responseText = "🎉 *ثبت‌نام با موفقیت انجام شد!* خوش اومدی *$username* عزیز 💛 حالا وارد حساب کاربریت شدی و می‌تونی از امکانات استفاده کنی."; sendMessage($from_id, $responseText, $userMainKeyboard); die; } if ($text == "✏️ ورود به حساب" && $user->logged_in == 0) { $responseText = "👤 *ورود به حساب کاربری* لطفاً *نام کاربری* خودت را وارد کن:"; setStep($from_id, "login-enter:username"); sendMessage($from_id, $responseText, $backToEnterKeyboard); die; } if ($user->step == "login-enter:username" && $user->logged_in == 0) { $username = trim($text); $queryCheckUser = "SELECT * FROM `accounts` WHERE `username` = ?"; $stmt = $pdo->prepare($queryCheckUser); $stmt->execute([$username]); $account = $stmt->fetch(); if (!$account) { $errorText = "❌ *نام کاربری یافت نشد!* لطفاً دوباره یک نام کاربری معتبر وارد کن:"; sendMessage($from_id, $errorText); die; } setStep($from_id, "login-enter:password:$username"); $responseText = "🔐 عالی! حالا *رمز عبور* همین حساب را وارد کن:"; sendMessage($from_id, $responseText); die; } if (strpos($user->step, "login-enter:password:") === 0 && $user->logged_in == 0) { $username = str_replace("login-enter:password:", "", $user->step); $password = trim($text); $queryAccount = "SELECT * FROM `accounts` WHERE `username` = ?"; $stmt = $pdo->prepare($queryAccount); $stmt->execute([$username]); $account = $stmt->fetch(); if (!$account || !password_verify($password, $account->password)) { $errorText = "❌ *رمز عبور اشتباه است!* لطفاً دوباره تلاش کن:"; sendMessage($from_id, $errorText); die; } $queryUpdateLogin = "UPDATE `users` SET `logged_in` = 1, `login_username` = ? WHERE `telegram_id` = ?"; $stmtLoginUpdate = $pdo->prepare($queryUpdateLogin); $stmtLoginUpdate->execute([$username, $from_id]); setStep($from_id, "home"); $responseText = "🎉 *ورود موفقیت‌آمیز!* خوش برگشتی *$username* عزیز 💛 اکنون وارد حساب کاربریت شدی."; sendMessage($from_id, $responseText, $userMainKeyboard); die; } if ($text == "🚪 خروج از حساب" && $user->logged_in == 1) { $queryLogout = "UPDATE `users` SET `logged_in` = 0, `login_username` = NULL WHERE `telegram_id` = ?"; $stmtLogout = $pdo->prepare($queryLogout); $stmtLogout->execute([$from_id]); setStep($from_id, "home"); $responseText = "🔓 *شما با موفقیت از حساب کاربری خارج شدید.* برای ورود دوباره، از دکمه‌های زیر استفاده کن:"; sendMessage($from_id, $responseText, $enterUserKeyboard); die; }