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/_onSyncApiSuccess.js
javascript · 93 lines
1/**#command2name: _onSyncApiSuccess3answer: 4keyboard: 5parse_mode: 6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12/* Callback handler for /sync_api_products-style HTTP.post integrations.13 Accepts either a plain service array or {services:[...]} / {data:[...]}.14 Products are stored in the same "stored_products" schema used by the shop. */15 16try {17 var parsed = (typeof content === "string") ? JSON.parse(content) : content;18 var services = Array.isArray(parsed) ? parsed : (parsed && (parsed.services || parsed.data || parsed.products));19 20 if (!Array.isArray(services)) {21 throw new Error("API response me services/products array nahi mila.");22 }23 24 var products = Bot.getProperty("stored_products");25 if (!Array.isArray(products)) products = [];26 var synced = 0;27 28 for (var i = 0; i < services.length; i++) {29 var s = services[i] || {};30 var serviceId = (s.service !== undefined ? s.service : (s.id !== undefined ? s.id : s.product_id));31 var serviceName = s.name || s.service_name || s.product_name;32 var rate = Number(s.rate !== undefined ? s.rate : (s.price !== undefined ? s.price : s.cost));33 34 if (serviceId === undefined || !serviceName || !isFinite(rate)) continue;35 36 var found = -1;37 for (var j = 0; j < products.length; j++) {38 if (products[j] && String(products[j].id) === String(serviceId)) {39 found = j;40 break;41 }42 }43 44 var plan = {45 id: "api_plan_" + String(serviceId),46 name: "30 Days",47 days: 30,48 unit: "day",49 durationDisplay: "30 Days",50 normal_price: rate,51 reseller_price: rate,52 price: rate53 };54 55 if (found === -1) {56 products.push({57 name: String(serviceName),58 emoji: "",59 id: String(serviceId),60 manual_key_product: false,61 category: "both",62 plans: [plan]63 });64 } else {65 products[found].name = String(serviceName);66 products[found].id = String(serviceId);67 products[found].manual_key_product = false;68 if (!products[found].category) products[found].category = "both";69 if (!Array.isArray(products[found].plans)) products[found].plans = [];70 71 var planIndex = -1;72 for (var p = 0; p < products[found].plans.length; p++) {73 if (String(products[found].plans[p].days) === "30" &&74 String(products[found].plans[p].unit || "day") === "day") {75 planIndex = p;76 break;77 }78 }79 if (planIndex === -1) products[found].plans.push(plan);80 else products[found].plans[planIndex] = plan;81 }82 synced++;83 }84 85 Bot.setProperty("stored_products", products, "json");86 Bot.sendMessage(87 "✅ <b>API Sync Complete!</b>\nTotal: <code>" + synced +88 "</code> products save/update ho gaye.",89 {parse_mode:"HTML"}90 );91} catch (e) {92 Bot.sendMessage("❌ API Sync Error: <code>" + String(e.message).replace(/&/g,"&").replace(/</g,"<") + "</code>", {parse_mode:"HTML"});93}