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/_buy_hack_cat.js
javascript · 139 lines
1/**#command2name: /buy_hack_cat3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// =========================================================13// 🛒 SHOP MENU — Product listing filtered by category (Step 1.5)14// Called after user selects "ANDROID ROOT" or "ANDROID NON ROOT" from15// /buy_hack. Shows only products matching that category. Products added16// with category "both" (or no category set at all — legacy products)17// show up under BOTH root and nonroot listings.18// =========================================================19 20try {21 var rawData = Bot.getProperty("stored_products");22 var productList = [];23 24 if (Array.isArray(rawData)) {25 productList = rawData;26 } else if (typeof rawData === "string") {27 try {28 productList = JSON.parse(rawData);29 if (!Array.isArray(productList)) { productList = []; }30 } catch (e) {31 productList = [];32 }33 }34 35 var chatId = chat.chatid;36 var firstName = user && user.first_name ? user.first_name : "User";37 38 // Category param — "root" or "nonroot"39 var category = params ? params.trim().toLowerCase() : "";40 if (category === "") {41 var cbData = request && request.callback_query ? request.callback_query.data : "";42 category = cbData.replace("/buy_hack_cat ", "").replace("buy_hack_cat ", "").trim().toLowerCase();43 }44 if (category !== "root" && category !== "nonroot" && category !== "iphone") { category = "nonroot"; }45 46 var categoryLabel = (category === "root") ? "ANDROID ROOT" : (category === "iphone") ? "iPHONE" : "ANDROID NON ROOT";47 48 var productButtons = [];49 50 for (var i = 0; i < productList.length; i++) {51 var item = productList[i];52 if (!item) { continue; }53 54 // Legacy products (no category field) ya "both" wale — dono categories me dikhte hain.55 var itemCategory = item.category ? String(item.category).toLowerCase() : "both";56 if (itemCategory !== "both" && itemCategory !== category) { continue; }57 58 var itemName = item.name ? String(item.name) : "Product " + (i + 1);59 var itemEmoji = item.emoji ? String(item.emoji) : "5226656353744862682";60 var itemOutOfStock = item.out_of_stock === true;61 var planCount = Array.isArray(item.plans) ? item.plans.length : 0;62 63 // Product status UI: admin ke "Under Maintenance" toggle ke baad64 // button turant red ho aur screenshot-style UNDER UPDATE label dikhe.65 // Live products green/normal rahenge aur unke plan count ke saath dikhenge.66 var buttonText;67 var buttonStyle;68 var buttonEmoji;69 if (itemOutOfStock) {70 // Screenshot-style: unavailable product = red button.71 buttonText = itemName;72 buttonStyle = "danger";73 buttonEmoji = Bot.getProperty("product_maintenance_emoji") || "6100657257605763582";74 } else {75 // Screenshot-style: clean product name + premium emoji, no "(plans)" suffix.76 buttonText = itemName;77 buttonStyle = "primary";78 buttonEmoji = itemEmoji;79 }80 81 productButtons.push([82 {83 text: " " + buttonText + " ",84 callback_data: "/viewprod " + i,85 style: buttonStyle,86 icon_custom_emoji_id: buttonEmoji87 }88 ]);89 }90 91 var storeText;92 93 if (productButtons.length === 0) {94 storeText =95 "<blockquote><b>" + categoryLabel + "</b></blockquote>\n" +96 "━━━━━━━━━━━━━━━━━━━━━\n\n" +97 "<tg-emoji emoji-id='6093854128193152827'>⚠️</tg-emoji> <i>Is category me abhi koi product available nahi hai. Jald hi add kiya jayega!</i>\n" +98 "━━━━━━━━━━━━━━━━━━━━━";99 } else {100 storeText =101 "<blockquote>🛒 <b>PRODUCT STORE — SHOP</b> 🛍️</blockquote>\n\n" +102 "🔥 <b>Choose a product:</b>";103 }104 105 productButtons.push([106 {107 text: "𝑩𝒂𝒄𝒌",108 callback_data: "/buy_hack",109 style: "danger",110 icon_custom_emoji_id: "5893163582194978381"111 }112 ]);113 114 var replyMarkupStr = JSON.stringify({ inline_keyboard: productButtons });115 116 if (request && request.message && request.message.message_id) {117 if (request.message.photo) {118 try { Api.deleteMessage({ chat_id: chatId, message_id: request.message.message_id }); } catch (e) {}119 Api.sendMessage({ chat_id: chatId, text: storeText, parse_mode: "HTML", reply_markup: replyMarkupStr });120 } else {121 Api.editMessageText({122 chat_id: chatId,123 message_id: request.message.message_id,124 text: storeText,125 parse_mode: "HTML",126 reply_markup: replyMarkupStr127 });128 }129 } else {130 Api.sendMessage({ chat_id: chatId, text: storeText, parse_mode: "HTML", reply_markup: replyMarkupStr });131 }132 133 if (request && request.id) {134 try { Api.answerCallbackQuery({ callback_query_id: request.id }); } catch (e) {}135 }136 137} catch (err) {138 Bot.sendMessage("⚠️ Shop Menu Error: " + err.message, { parse_mode: "HTML" });139}