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;
}
}