ayushyadav7970824760/goldensellingstore_botPublic · Bot Template
AIThis Telegram store bot lets customers browse digital products and plans, apply coupons, add funds via UPI, and receive purchased keys. It includes a full admin panel for managing products, reordering items, setting reseller prices, viewing and removing key stock, configuring UPI payment details and update links, and checking user balances. Co-admins and resellers are supported, and support tickets are forwarded to the admin.
Commercedigital_storeadmin_panelupi_paymentsresellercouponskey_stock
146 commands0 envUpdated 2d agoCreated Sep 5, 2026
commands/_addbal.js
javascript · 122 lines
1/**#command2name: /addbal3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// ✅ FIXED (v3): pehle admin_id hardcoded tha ("8477746023"), jabki baaki bot13// (start menu, /admin, ownership transfer) sab dynamic "owner_id" property use14// karte hain. Agar kabhi ownership transfer hua ya co-admin ne button dabaya,15// ye command silently "not authorized" de deta tha — isiliye "Add Bal" button16// theek se kaam nahi kar raha tha. Ab yahan bhi wahi dynamic check hai.17let admin_id = Bot.getProperty("owner_id") || "8477746023";18let requesterId = String(user.telegramid);19let isCoAdmin = Bot.getProperty("co_admin_" + requesterId);20 21if (requesterId === admin_id || isCoAdmin) {22 23 // ✅ FIXED: button dabate hi Telegram ka loading-spinner turant hata do,24 // taaki click "fast/responsive" mehsoos ho (pehle koi answerCallbackQuery25 // nahi tha, isliye button dabane par kuch second tak kuch nahi hota tha).26 if (request && request.id) {27 try {28 HTTP.post({29 url: "https://api.telegram.org/bot" + bot.token + "/answerCallbackQuery",30 body: { callback_query_id: request.id }31 });32 } catch (ackErr) {}33 }34 35 let params = (typeof message !== "undefined" && message) ? message.split(" ") : [];36 let data = params[1];37 38 // ✅ FIXED: pehle "Add Bal" admin-panel button dabane par ye seedha "Wrong39 // Format" error de deta tha (kyunki button koi text argument nahi bhejta),40 // aur admin ko turant type karna padta tha "/addbal id|amount" khud se.41 // Ab button dabane par ek proper prompt aata hai aur agla text message42 // auto-capture ho jaata hai (see _start.js "MODULE 5").43 if (!data || !data.includes("|")) {44 // ✅ FIXED: purane atke hue admin steps clear karo pehle45 var __allAdminSteps2 = ["addbal_step","addbalall_step","rembal_step","checkbal_step",46 "set_download_link_step","set_payment_upi_step","set_payment_binance_step",47 "set_dailygift_price_step","set_refer_earn_step","set_how_link_step",48 "set_proof_link_step","set_support_link_step","give_key_step",49 "set_sale_channel_step","set_menu_emoji_step","set_welcome_message_step",50 "add_product_step"];51 for (var __si2 = 0; __si2 < __allAdminSteps2.length; __si2++) { User.setProperty(__allAdminSteps2[__si2], null, "string"); }52 User.setProperty("addbal_step", "waiting_input", "string");53 Bot.sendMessage(54 "<tg-emoji emoji-id='5409048419211682843'>💵</tg-emoji> <b>Add Balance</b>\n\n" +55 "<i>User ID aur amount is format me reply karein:</i>\n<code>user_id|amount</code>\n\n" +56 "<i>Example:</i> <code>8477746023|100</code>",57 {parse_mode: "HTML"}58 );59 return;60 }61 62 let splitData = data.split("|");63 let targetUserId = splitData[0].trim();64 let amountToAdd = parseFloat(splitData[1].trim());65 66 if (!targetUserId || isNaN(amountToAdd) || amountToAdd <= 0) {67 Bot.sendMessage("❌ *Invalid Format! Use:* `user_id|amount`", {parse_mode: "Markdown"});68 return;69 }70 71 try {72 // Balance add karna73 let targetUserBalance = Libs.ResourcesLib.anotherUserRes("balance", targetUserId);74 targetUserBalance.add(amountToAdd);75 76 // Admin notification — turant confirm karo ki balance credit ho gaya77 Bot.sendMessage("✅ Success! Added " + amountToAdd + " to user " + targetUserId, {parse_mode: "HTML"});78 79 // All 4 Premium Emojis in Quote Style80 let notificationText =81 "<blockquote>" +82 "<tg-emoji emoji-id='6192822213486321961'>🗣</tg-emoji> Admin Added: " + amountToAdd + "\n" +83 "<tg-emoji emoji-id='6266967801580231067'>💎</tg-emoji> Balance Credited!\n" +84 "<tg-emoji emoji-id='6267068789146260253'>💰</tg-emoji> Wallet Updated\n" +85 "<tg-emoji emoji-id='5866053971960929280'>🛒</tg-emoji> /start TO SHOP NOW" +86 "</blockquote>";87 88 // ✅ FIXED: raw HTTP.post ki jagah bot ka built-in Api.sendMessage use kiya —89 // yahi wrapper baaki poore bot me reliably use ho raha hai, isliye user-side90 // notification bhi consistently aur fast deliver hota hai.91 try {92 Api.sendMessage({93 chat_id: targetUserId,94 text: notificationText,95 parse_mode: "HTML"96 });97 } catch (notifyErr) {}98 99 // 🔔 Automatic fund-added notification to configured group/channel.100 try {101 var fundGroupId = Bot.getProperty("fund_group_id") || Bot.getProperty("sale_channel_id");102 if (fundGroupId) {103 var liveBal = Number(Libs.ResourcesLib.anotherUserRes("balance", targetUserId).value() || 0);104 Api.sendMessage({105 chat_id: fundGroupId,106 text: "<blockquote><tg-emoji emoji-id='6194922667242429131'>🎉</tg-emoji> <b>NEW FUND ADDED</b> <tg-emoji emoji-id='6266967801580231067'>💎</tg-emoji></blockquote>\n\n" +107 "<tg-emoji emoji-id='6145572393499762737'>👤</tg-emoji> <b>User ID:</b> <code>" + targetUserId + "</code>\n" +108 "<tg-emoji emoji-id='6267068789146260253'>💰</tg-emoji> <b>Amount:</b> ₹<code>" + amountToAdd.toFixed(2) + "</code>\n" +109 "<tg-emoji emoji-id='6064138396228392033'>💳</tg-emoji> <b>New Balance:</b> ₹<code>" + liveBal.toFixed(2) + "</code>\n" +110 "<tg-emoji emoji-id='6215386799133433653'>✅</tg-emoji> <b>Status:</b> Admin Credited",111 parse_mode: "HTML"112 });113 }114 } catch (groupErr) {}115 116 } catch (err) {117 Bot.sendMessage("⚠️ *Error:* " + err.message, {parse_mode: "Markdown"});118 }119 120} else {121 Bot.sendMessage("❌ You are not authorized to use this command.");122}