mansuriamaan803/SANJEEVFFSTORE_botPublic · Bot Template

AIThis bot is a commerce platform for selling digital products, primarily focused on FreeFire accounts and related services. It provides admin tools for managing products, categories, stock, reseller roles, and a balance system for user payments. Users can browse products, apply coupons, and check their balance through an interactive interface with premium emojis and inline keyboards.

Commercecommercestoreproductsresellerbalancecoupon
ProfileTelegram
102 commands0 envUpdated 12d agoCreated Aug 26, 2026
Back to folder

commands/_process_buy.js

javascript · 257 lines

Raw
1/**#command2name: /process_buy3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// =========================================================13// 🛒 COMMAND = /process_buy (ORIGINAL)14// =========================================================15 16try {17  if (!params || typeof params !== "string") return;18 19  let data = params.split(" ");20  let rawType = data[0] ? data[0].toLowerCase().trim() : "";21  let actionState = data[1] ? data[1].toLowerCase().trim() : "";22 23  let queryId = request.id || (request.callback_query && request.callback_query.id);24  let userId = user.telegramid.toString().trim(); 25  let chatID = chat.chatid;26 27  let rawResellers = Bot.getProperty("resellers_list");28  let resellers = [];29 30  if (rawResellers) {31      if (Array.isArray(rawResellers)) {32          resellers = rawResellers;33      } else if (typeof rawResellers === "string") {34          try { resellers = JSON.parse(rawResellers); } catch(e) { resellers = rawResellers.split(","); }35      } else if (typeof rawResellers === "object") {36          resellers = rawResellers.resellers || rawResellers.list || rawResellers.users || Object.values(rawResellers);37      }38  }39  if (!Array.isArray(resellers)) { resellers = []; }40 41  let isReseller = resellers.map(function(id) {42      return id ? id.toString().toLowerCase().trim() : "";43  }).includes(userId) || (userId === "8963001413");44  45  let finalCost = 0;46  let stockData = [];47  let displayTypeName = "";48  let isDynamicCategory = false;49  let isGeneralCategory = false;50  let selectedCat = null;51  52  let fbCategories = Bot.getProperty("fb_categories", []);53  if (!Array.isArray(fbCategories)) { fbCategories = []; }54 55  if (rawType.startsWith("fb_")) {56      isDynamicCategory = true;57      let targetCatId = rawType.replace("fb_", "").trim();58      59      for (let i = 0; i < fbCategories.length; i++) {60          if (fbCategories[i].id === targetCatId) {61              selectedCat = fbCategories[i];62              break;63          }64      }65      66      if (!selectedCat) {67          if (queryId) Api.answerCallbackQuery({ callback_query_id: queryId, text: "❌ Category deleted!", show_alert: true });68          return;69      }70      71      if (isReseller && selectedCat.reseller_price !== undefined && selectedCat.reseller_price !== "") {72          finalCost = Number(selectedCat.reseller_price);73      } else {74          finalCost = Number(selectedCat.price || 0);75      }76      stockData = selectedCat.stock_list || [];77      displayTypeName = selectedCat.name;78  } else if (rawType == "fb" || rawType == "google") {79      let priceRes = parseFloat(Bot.getProperty("price_res_" + rawType) || 0);80      let priceNorm = parseFloat(Bot.getProperty("price_norm_" + rawType) || 0);81      finalCost = isReseller ? priceRes : priceNorm;82      stockData = Bot.getProperty("ff_stock_" + rawType) || [];83      displayTypeName = rawType.toUpperCase();84  } else {85      var categories = Bot.getProperty("ff_categories") || {};86      if (!categories[rawType]) {87          if (queryId) Api.answerCallbackQuery({ callback_query_id: String(queryId), text: "❌ Invalid Product!", show_alert: true });88          return;89      }90      isGeneralCategory = true;91      selectedCat = categories[rawType];92      93      if (isReseller) {94          if (selectedCat.reseller_price !== undefined && selectedCat.reseller_price !== "" && selectedCat.reseller_price !== null && Number(selectedCat.reseller_price) > 0) {95              finalCost = Number(selectedCat.reseller_price);96          } else if (selectedCat.price !== undefined && selectedCat.price !== "" && selectedCat.price !== null) {97              finalCost = Number(selectedCat.price); 98          } else {99              finalCost = Number(selectedCat.normal_price || 0);100          }101      } else {102          finalCost = Number(selectedCat.normal_price || selectedCat.price || 0);103      }104      105      let fallbackStock = Bot.getProperty("ff_stock_" + rawType) || [];106      stockData = (selectedCat.stock_list && selectedCat.stock_list.length > 0) ? selectedCat.stock_list : fallbackStock;107      displayTypeName = selectedCat.name;108  }109 110  if (!stockData || stockData.length === 0) {111      if (queryId) {112          Api.answerCallbackQuery({113              callback_query_id: String(queryId),114              text: "❌ Stock is empty! Cannot process purchase.",115              show_alert: true116          });117      } else {118          Api.sendMessage({ chat_id: chatID, text: "❌ Out of stock items cannot be processed." });119      }120      return;121  }122 123  var userRes = Libs.ResourcesLib.userRes("balance");124  var bonusBal = Bot.getProperty("balance" + userId) || 0;125  var unifiedTotalBalance = Number(userRes.value()) + Number(bonusBal);126 127  if (unifiedTotalBalance < finalCost) {128      var needToPay = finalCost - unifiedTotalBalance;129      130      User.setProperty("buy_price", finalCost, "number");131      User.setProperty("buy_needpay", needToPay, "number");132      User.setProperty("buy_prod_name", displayTypeName, "string");133 134      if (queryId) {135          Api.answerCallbackQuery({ 136              callback_query_id: String(queryId), 137              text: "⚠️ Balance low! Generating QR for ₹" + needToPay + "...", 138              show_alert: true 139          });140      }141 142      var targetUrl = "https://fampay.anujbots.xyz/qr.php?upi=mansuri-sarfaraz@fam&amount=" + needToPay;143 144      Api.sendMessage({145          chat_id: chatID,146          text: "<b>📉 Requesting QR from server...\n<code>" + targetUrl + "</code></b>",147          parse_mode: "HTML"148      });149 150      HTTP.get({151          url: targetUrl,152          success: "/onBuyQR"153      });154      return;155  }156 157  if (bonusBal >= finalCost) {158      Bot.setProperty("balance" + userId, bonusBal - finalCost, "number");159  } else {160      var remainingDeduction = finalCost - bonusBal;161      Bot.setProperty("balance" + userId, 0, "number");162      userRes.remove(remainingDeduction);163  }164 165  var accountExtracted = stockData.shift();166  167  if (isDynamicCategory && selectedCat) {168      selectedCat.stock_list = stockData;169      Bot.setProperty("fb_categories", fbCategories, "json");170  } else if (isGeneralCategory && selectedCat) {171      selectedCat.stock_list = stockData;172      var categories = Bot.getProperty("ff_categories") || {};173      categories[rawType] = selectedCat;174      Bot.setProperty("ff_categories", categories, "json");175      Bot.setProperty("ff_stock_" + rawType, stockData, "json");176  } else {177      Bot.setProperty("ff_stock_" + rawType, stockData, "json");178  }179 180  var fullRawString = String(accountExtracted || "").trim();181  var emailData = fullRawString;182  var passwordData = "No Password Found";183 184  if (fullRawString.indexOf("|") !== -1) {185      var lastPipeIndex = fullRawString.lastIndexOf("|");186      var firstPart = fullRawString.substring(0, lastPipeIndex).trim();187      var secondPart = fullRawString.substring(lastPipeIndex + 1).trim();188 189      if (firstPart.indexOf(" ") !== -1) {190          var spaceParts = firstPart.split(" ");191          emailData = spaceParts[spaceParts.length - 1].trim();192      } else {193          emailData = firstPart;194      }195      passwordData = secondPart;196  }197 198  let purchasedKeys = User.getProperty("my_purchased_keys") || [];199  if (!Array.isArray(purchasedKeys)) { purchasedKeys = []; }200  201  let currentDate = new Date().toLocaleDateString('en-IN', { timeZone: 'Asia/Kolkata' });202  purchasedKeys.push({203      productName: displayTypeName,204      cost: finalCost.toString(),205      key: emailData + (passwordData !== "No Password Found" ? " | " + passwordData : ""),206      days: "Permanent", 207      date: currentDate208  });209  User.setProperty("my_purchased_keys", purchasedKeys, "json");210 211  var deliveryText = 212    "┏━━━━━━━━━━━━━━━━━━━━━━━━┓\n" +213    "┃ ❤️‍🔥 <b>PURCHASE SUCCESSFUL!</b> ❤️‍🔥 ┃\n" +214    "┗━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n" +215    "📦 <b>Item:</b> <code>" + displayTypeName + "</code>\n" +216    "💰 <b>Paid:</b> <code>₹" + finalCost + "</code> " + (isReseller ? "<b>(Reseller)</b>" : "") + "\n" +217    "━━━━━━━━━━━━━━━━━━━━━━━━━━\n" +218    "👤 <b>ACCOUNT DETAILS:</b>\n\n" +219    "🚀 <b>Email:</b> <code>" + emailData + "</code>\n" +220    "🔒 <b>Password:</b> <code>" + passwordData + "</code>\n" +221    "━━━━━━━━━━━━━━━━━━━━━━━━━━\n" +222    "⚠️ <i>Copy details instantly.</i>";223 224  Api.sendMessage({225      chat_id: chatID,226      text: deliveryText,227      parse_mode: "HTML"228  });229 230  if (queryId) {231      Api.answerCallbackQuery({232          callback_query_id: String(queryId),233          text: "✅ Released Successfully!",234          show_alert: false235      });236  }237 238  var adminLogChannel = "8963001413"; 239  var adminNotificationMsg = 240    "<blockquote>⚠️ <b>NEW ORDER ALERT</b>" + (isReseller ? " [RESELLER]" : "") + "</blockquote>\n" +241    "👤 <b>User:</b> <a href='tg://user?id=" + userId + "'>" + user.first_name + "</a> (<code>" + userId + "</code>)\n" +242    "📦 <b>Item:</b> <code>" + displayTypeName + "</code>\n" +243    "💰 <b>Revenue:</b> <code>₹" + finalCost + "</code>\n" +244    "⚡ <b>Stock Left:</b> <code>" + stockData.length + " units</code>\n\n" +245    "🖥 <b>ACCOUNT DETAILS:</b>\n" +246    "➔ <b>Email:</b> <code>" + emailData + "</code>\n" +247    "➔ <b>Password:</b> <code>" + passwordData + "</code>";248 249  Api.sendMessage({250      chat_id: adminLogChannel,251      text: adminNotificationMsg,252      parse_mode: "HTML"253  });254 255} catch(e) {256  Bot.sendMessage("Critical Execution Failure Module Error: " + e.message);257}