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/_onSyncApiSuccess.js

javascript · 93 lines

Raw
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,"&amp;").replace(/</g,"&lt;") + "</code>", {parse_mode:"HTML"});93}