function handleMessage($m) { $chat = $m['chat']['id']; $text = trim($m['text'] ?? ''); $from = $m['from']; $pdo = db(); // ইউজার রেজিস্টার্ড আছে কি না চেক করুন $u = getUser($from['id']); if (!$u) { $ref = null; if (preg_match('/ref_(\d+)/', $text, $mm)) $ref = (int)$mm[1]; registerUser($from, $ref); $u = getUser($from['id']); } // /start কমান্ড দিলে সরাসরি মেইন মেনু দেখাবে if (strpos($text, '/start') === 0) { // সাবস্ক্রিপশন চেক if (!checkSubscription($from['id'])) { sendMessage($chat, '❌ বট ব্যবহার করতে হলে নিচের চ্যানেলগুলোতে অবশ্যই জয়েন করতে হবে। জয়েন করার পর "✅ চেক করুন" বাটনে ক্লিক করুন:', subscriptionKeyboard()); return; } sendMessage($chat, '👋 স্বাগতম, ' . htmlspecialchars($from['first_name'] ?? '') . "!\n\nনিচের মেনু থেকে একটি অপশন বেছে নিন।", mainMenu(isAdmin($from['id']))); return; } // বাধ্যতামূলক চ্যানেল চেক if ($text === '✅ চেক করুন' || !checkSubscription($from['id'])) { if (checkSubscription($from['id'])) { sendMessage($chat, '✅ ধন্যবাদ! আপনার চ্যানেল সাবস্ক্রিপশন ভেরিফাই হয়েছে। নিচের মেনু থেকে অপশন বেছে নিন:', mainMenu(isAdmin($from['id']))); } else { sendMessage($chat, '❌ বট ব্যবহার করতে হলে নিচের চ্যানেলগুলোতে অবশ্যই জয়েন করতে হবে। জয়েন করার পর "✅ চেক করুন" বাটনে ক্লিক করুন:', subscriptionKeyboard()); } return; } // অ্যাডমিন কমান্ড হ্যান্ডলিং if (isAdmin($from['id'])) { if (preg_match('/^\/approve\s+(\S+)$/', $text, $mm)) { $st = $pdo->prepare("SELECT * FROM purchases WHERE txid = ? AND status = 'pending'"); $st->execute([$mm[1]]); $p = $st->fetch(); if ($p) { $pdo->prepare("UPDATE purchases SET status = 'approved' WHERE id = ?")->execute([$p['id']]); $pdo->prepare('UPDATE users SET coins = coins + ? WHERE user_id = ?')->execute([$p['coins'], $p['user_id']]); addTx($p['user_id'], 'purchase', $p['coins'], 'ক্রয় ' . $p['amount_taka'] . ' টাকা, TXID ' . $p['txid']); sendMessage($chat, '✅ অ্যাপ্রুভ হয়েছে।'); sendMessage($p['user_id'], '✅ আপনার পেমেন্ট ভেরিফাই হয়েছে! +' . $p['coins'] . " কয়েন যোগ হয়েছে।"); } else { sendMessage($chat, '❌ পেন্ডিং পেমেন্ট পাওয়া যায়নি।'); } return; } if (preg_match('/^\/reject\s+(\S+)$/', $text, $mm)) { $st = $pdo->prepare("SELECT * FROM purchases WHERE txid = ? AND status = 'pending'"); $st->execute([$mm[1]]); $p = $st->fetch(); if ($p) { $pdo->prepare("UPDATE purchases SET status = 'rejected' WHERE id = ?")->execute([$p['id']]); sendMessage($chat, '❌ রিজেক্ট হয়েছে।'); sendMessage($p['user_id'], '❌ আপনার পেমেন্ট রিজেক্ট হয়েছে। অ্যাডমিনের সাথে যোগাযোগ করুন।'); } else { sendMessage($chat, '❌ পেন্ডিং পেমেন্ট পাওয়া যায়নি।'); } return; } } $menuLabels = ['👤 অ্যাকাউন্ট','🔗 রেফার','💳 কয়েন কিনুন','📨 এসএমএস পাঠান','🎁 রিডিম কোড', '🛠 অ্যাডমিন প্যানেল','💸 ইউজারকে ব্যালেন্স দিন','🎟️ রিডিম কোড তৈরি','🔙 মেইন মেনু']; if ($u['state'] && in_array($text, $menuLabels)) setState($u['user_id'], null); if ($u['state']) { handleState($u, $chat, $text); return; } switch ($text) { case '👤 অ্যাকাউন্ট': sendMessage($chat, "👤 আপনার অ্যাকাউন্ট\n\n🆔 User ID: {$u['user_id']}\n🪙 কয়েন ব্যালেন্স: {$u['coins']}\n📅 জয়েন হয়েছে: {$u['created_at']}"); break; case '🔗 রেফার': $link = 'https://t.me/' . BOT_USERNAME . '?start=ref_' . $u['user_id']; sendMessage($chat, "🔗 আপনার রেফার লিংক\n\n$link\n\n👉 লিংকটি শেয়ার করুন। আপনার লিংকে নতুন ইউজার জয়েন করলে আপনি +" . REFERRAL_REWARD . " কয়েন পাবেন!"); break; case '💳 কয়েন কিনুন': sendMessage($chat, "💳 কয়েন কিনুন\n\n💰 দাম:\n• 100 কয়েন = " . COIN_PRICE_TK . " টাকা\n• 500 কয়েন = " . (COIN_PRICE_TK * 5) . " টাকা\n• 1000 কয়েন = " . (COIN_PRICE_TK * 10) . " টাকা\n\n📲 পেমেন্ট করুন (Send Money): " . PAYMENT_NUMBER . "\n\n👉 প্রথমে কত টাকা দিয়েছেন সেটা লিখুন:"); setState($u['user_id'], 'buy_amount'); break; case '📨 এসএমএস পাঠান': if ($u['coins'] < SMS_COST) { sendMessage($chat, '❌ পর্যাপ্ত কয়েন নেই! 💳 কয়েন কিনুন বা 🎁 রিডিম কোড ব্যবহার করুন।'); break; } sendMessage($chat, '📨 এসএমএস পাঠান (প্রতি এসএমএস = ' . SMS_COST . " কয়েন)\n\nরিসিভারের মোবাইল নাম্বার লিখুন (যেমন: 01712345678):"); setState($u['user_id'], 'sms_number'); break; case '🎁 রিডিম কোড': sendMessage($chat, '🎁 রিডিম কোড\n\nআপনার কোডটি লিখুন:'); setState($u['user_id'], 'redeem_code'); break; case '🛠 অ্যাডমিন প্যানেল': if (isAdmin($from['id'])) { sendMessage($chat, '🛠 অ্যাডমিন প্যানেল\n\nএকটি অপশন বেছে নিন:', adminMenu()); } else { sendMessage($chat, '⛔ আপনার এই অপশনে প্রবেশাধিকার নেই।'); } break; case '💸 ইউজারকে ব্যালেন্স দিন': if (isAdmin($from['id'])) { sendMessage($chat, '💸 যে ইউজারকে কয়েন দিতে চান তার User ID লিখুন:'); setState($u['user_id'], 'admin_userid'); } break; case '🎟️ রিডিম কোড তৈরি': if (isAdmin($from['id'])) { sendMessage($chat, '🎟️ নতুন রিডিম কোডে কত কয়েন থাকবে তা লিখুন:'); setState($u['user_id'], 'admin_code_coins'); } break; case '🔙 মেইন মেনু': sendMessage($chat, 'মেইন মেনু:', mainMenu(isAdmin($from['id']))); break; default: sendMessage($chat, '🤔 বুঝতে পারিনি। নিচের মেনু থেকে অপশন বেছে নিন।', mainMenu(isAdmin($from['id']))); break; } }