login_username)) { $keyboard = json_encode([ "resize_keyboard" => true, "keyboard" => [ [["text" => "📢 پیام همگانی"], ["text" => "📩 فوروارد همگانی"]], [["text" => "👤 ارسال پیام به کاربر"]], [["text" => "↩️ بازگشت به مدیریت"]] ] ]); sendMessage($from_id, "📬 لطفاً نوع پیام‌رسانی را انتخاب کنید:", $keyboard); die; } # -------------------- پیام همگانی -------------------- if ($text == "📢 پیام همگانی" && isAdmin($user->login_username)) { setStep($from_id, "admin:broadcast_text"); sendMessage($from_id, "✏️ لطفاً *متن پیام همگانی* را ارسال کنید:", $backToAdminKeyboard); die; } if ($user->step == "admin:broadcast_text" && isAdmin($user->login_username)) { $loading = sendMessage($from_id, "⏳ در حال آماده‌سازی پیام همگانی..."); $loadingMsgId = $loading->result->message_id ?? null; $pdo->prepare("DELETE FROM send_all")->execute(); $stmt = $pdo->prepare("SELECT telegram_id FROM users"); $stmt->execute(); $users = $stmt->fetchAll(); $insert = $pdo->prepare("INSERT INTO send_all (chat_id, text) VALUES (?, ?)"); foreach ($users as $u) { $insert->execute([$u->telegram_id, $text]); } $count = count($users); if ($loadingMsgId) { editMessage($from_id, $loadingMsgId, "📢 *پیام همگانی ثبت شد*\n👥 تعداد کاربران: *{$count}* نفر"); } sendMessage($from_id, "به مدیریت بازگشتید.", $adminMainKeyboard); setStep($from_id, "admin_panel"); die; } # -------------------- فوروارد همگانی -------------------- if ($text == "📩 فوروارد همگانی" && isAdmin($user->login_username)) { setStep($from_id, "admin:forward_all"); sendMessage($from_id, "📨 لطفاً پیام فورواردی را ارسال کنید:", $backToAdminKeyboard); die; } if ($user->step == "admin:forward_all" && isAdmin($user->login_username)) { if (!isset($update->message->message_id)) { sendMessage($from_id, "⚠️ لطفاً یک پیام ارسال شده یا فوروارد شده ارسال کنید.", $backToAdminKeyboard); die; } $loading = sendMessage($from_id, "⏳ در حال آماده‌سازی فوروارد همگانی..."); $loadingMsgId = $loading->result->message_id ?? null; $pdo->prepare("DELETE FROM forward_all")->execute(); // *** مهم‌ترین اصلاح *** $sourceChat = $update->message->chat->id; $msgId = $update->message->message_id; $stmt = $pdo->prepare("SELECT telegram_id FROM users"); $stmt->execute(); $users = $stmt->fetchAll(); $insert = $pdo->prepare("INSERT INTO forward_all (from_id, message_id, chat_id, status) VALUES (?, ?, ?, 0)"); foreach ($users as $u) { $insert->execute([$sourceChat, $msgId, $u->telegram_id]); } $count = count($users); if ($loadingMsgId) { editMessage($from_id, $loadingMsgId, "📩 *فوروارد همگانی ثبت شد*\n👥 تعداد کاربران: *{$count}* نفر"); } sendMessage($from_id, "به مدیریت بازگشتید.", $adminMainKeyboard); setStep($from_id, "admin_panel"); die; } # ---------------- ارسال پیام به کاربر ---------------- if ($text == "👤 ارسال پیام به کاربر" && isAdmin($user->login_username)) { setStep($from_id, "admin:pm_enter_id"); sendMessage($from_id, "🔢 شناسه عددی تلگرام کاربر را وارد کنید:", $backToAdminKeyboard); die; } if ($user->step == "admin:pm_enter_id" && isAdmin($user->login_username)) { $tid = trim($text); if (!is_numeric($tid)) { sendMessage($from_id, "❌ شناسه عددی معتبر نیست.", $backToAdminKeyboard); die; } setStep($from_id, "admin:pm_write:$tid"); sendMessage($from_id, "✏️ لطفاً پیام خود را ارسال کنید:", $backToAdminKeyboard); die; } if (strpos($user->step, "admin:pm_write:") === 0 && isAdmin($user->login_username)) { $tid = explode("admin:pm_write:", $user->step)[1]; $msg = "📨 *یک پیام جدید از مدیریت دریافت کردید:*\n\n" . $text; sendMessage($tid, $msg); sendMessage($from_id, "✅ پیام با موفقیت ارسال شد.", $adminMainKeyboard); setStep($from_id, "admin_panel"); die; }