devbro468/Dev_x_store_botPublic · Bot Template
AIThis bot operates a digital storefront (DEV X STORE) selling subscription-based products — likely game hacks, accounts, or access keys — categorized by platform (Android Root, Non-Root, iPhone). It features a reseller program with discounted pricing, a dual-currency wallet (INR balance + Telegram Stars/XTR), and a full admin/co-admin panel for managing products, plans, per-plan pricing, stock (keys/accounts), coupons, and API endpoints. Purchases flow through a plan selection screen offering wallet payment, Stars invoices (sendInvoice with XTR currency), and coupon application. Successful Stars payments are handled via successful_payment webhook, crediting wallet or delivering keys directly. Admin tools include user listing with chunked messaging, stock viewing/deletion with inline keyboards, co-admin management, and API registry updates. The bot registers users on first interaction and
commands/_checkbal.js
javascript · 73 lines
1/**#command2name: /checkbal3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12try {13 // ✅ FIXED (v3): dynamic owner_id + co-admin check (same fix as /addbal).14 var adminId = Bot.getProperty("owner_id") || "8875810358";15 var isCoAdmin = Bot.getProperty("co_admin_" + String(chat.chatid));16 if (String(chat.chatid) !== adminId && !isCoAdmin) return;17 18 // ✅ FIXED: instantly ack the button press so it doesn't feel stuck/slow.19 if (request && request.id) {20 try {21 HTTP.post({22 url: "https://api.telegram.org/bot" + bot.token + "/answerCallbackQuery",23 body: { callback_query_id: request.id }24 });25 } catch (ackErr) {}26 }27 28 // Expected Usage: /checkbalance USER_ID29 var targetId = params ? params.trim() : null;30 31 // ✅ FIXED: same button-click bug as /addbal — ab prompt aata hai.32 if (!targetId || isNaN(targetId)) {33 User.setProperty("checkbal_step", "waiting_input", "string");34 Bot.sendMessage(35 "<tg-emoji emoji-id='6039605143601680423'>📊</tg-emoji> <b>Check Balance</b>\n\n" +36 "<i>Jis user ka balance check karna hai uski User ID reply karein:</i>\n<code>8875810358</code>",37 { parse_mode: "HTML" }38 );39 return;40 }41 42 // 👤 NAME & USERNAME DEFAULT FALLBACKS43 var name = "N/A";44 var username = "N/A";45 46 // Agar admin apni khud ki ID check kar raha hai tabhi user metadata direct load hoga47 if (String(targetId) === String(user.telegramid)) {48 name = user.first_name || "N/A";49 username = user.username ? "@" + user.username : "N/A";50 }51 52 // 💰 WALLET BALANCE REGISTERS FETCH53 var userResBalance = Libs.ResourcesLib.anotherUserRes("balance", targetId).value() || 0;54 var adminCustomBal = Bot.getProperty("balance" + targetId) || 0;55 var totalUserBal = (Number(userResBalance) + Number(adminCustomBal)).toFixed(2);56 57 // 📉 TOTAL EXPENSE NODE TRACKING (Total Invest mapping)58 var totalSpent = Bot.getProperty("total_spent_by_" + targetId) || 0;59 var formattedSpent = Number(totalSpent).toFixed(2);60 61 // 📄 FINAL RESPONSE BOX62 var messageText = "<blockquote><b><tg-emoji emoji-id='6039605143601680423'>📞</tg-emoji> USER ACCOUNT DETAILS</b>\n\n" +63 "• <b>Name:</b> " + name + "\n" +64 "• <b>Username:</b> " + username + "\n" +65 "• <b>User ID:</b> <code>" + targetId + "</code>\n" +66 "• <b>Balance:</b> <code>₹" + totalUserBal + "</code>\n" +67 "• <b>Total Invest:</b> <code>₹" + formattedSpent + "</code></blockquote>";68 69 Bot.sendMessage(messageText, { parse_mode: "HTML" });70 71} catch (err) {72 Bot.sendMessage("⚠️ Error: " + err.message);73}