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
ProfileTelegram
146 commands0 envUpdated 2d agoCreated Sep 5, 2026
Back to folder

commands/_addbal.js

javascript · 122 lines

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