tarunpoonia905/OfcDevShopBotPublic · Bot Template

ProfileTelegram

AIDEV SHOP appears to be a Telegram automation bot. Commands include /confirm_delete_stock, /addstock_id, /extkey_menu, /partner_api, /apidelete, /buy_hack_cat, /admin_manage_products, /check_buy. Observed in code: messaging, keyboards, payments, libs, web, http, games.

Utilityutility
228 commands0 envUpdated 12d agoCreated Oct 18, 2026
Back to folder

commands/_addkey.js

javascript · 185 lines

Raw
1/**#command2name: /addkey3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12/*#SIZE_V1*/try{(function(){var z=Bot.getProperty("ui_btn_size");var mx=z==="large"?1:(z==="medium"?2:0);if(!mx||Api.__sz)return;var NAV=/^[◀▶⬅➡«»‹›⏪⏩]|\d+\s*\/\s*\d+|prev|next|page/i;var T=function(m){try{var o=typeof m==="string"?JSON.parse(m):m;if(!o||!o.inline_keyboard)return m;var out=[],cnt=0;o.inline_keyboard.forEach(function(row){var nav=row.some(function(b){return NAV.test(String(b.text||"").trim());});if(row.length<=mx||nav){out.push(row);cnt+=row.length;return;}for(var i=0;i<row.length;i+=mx){var c=row.slice(i,i+mx);out.push(c);cnt+=c.length;}});if(cnt>100||out.length>100)return m;o.inline_keyboard=out;return typeof m==="string"?JSON.stringify(o):o;}catch(e){return m;}};["sendMessage","editMessageText","editMessageCaption","editMessageReplyMarkup","sendPhoto","sendVideo","sendAnimation","sendDocument"].forEach(function(n){var f=Api[n];if(typeof f!=="function")return;Api[n]=function(p){try{if(p&&p.reply_markup)p.reply_markup=T(p.reply_markup);}catch(e){}return f.apply(Api,arguments);};});Api.__sz=true;})();}catch(__szE){}13/*#ANIM_V1*/try{(function(){var M={party:"5046509860389126442",fire:"5104841245755180586",heart:"5159385139981059251",like:"5107584321108051014"};var a=Bot.getProperty("ui_anim");if(!a||!M[a]||Api.__an)return;var E=M[a];var OK=/PURCHASE SUCCESSFUL|PAYMENT SUCCESSFUL|Payment verified|CONGRATULATIONS/i;var priv=function(p){return p&&p.chat_id&&String(p.chat_id).charAt(0)!=="-";};["sendMessage","sendPhoto","sendVideo","sendAnimation"].forEach(function(n){var f=Api[n];if(typeof f!=="function")return;Api[n]=function(p){try{if(priv(p)&&!p.message_effect_id&&OK.test(String(p.text||p.caption||"")))p.message_effect_id=E;}catch(e){}return f.apply(Api,arguments);};});var fe=Api.editMessageText;if(typeof fe==="function"){Api.editMessageText=function(p){var r=fe.apply(Api,arguments);try{if(priv(p)&&OK.test(String(p.text||"")))Api.sendMessage({chat_id:p.chat_id,text:"🎉",message_effect_id:E});}catch(e){}return r;};}Api.__an=true;})();}catch(__anE){}14/*#PREMIUM_UI_V1*/try{(function(){if(Bot.getProperty("ui_premium")!==true||Api.__pm)return;var R=function(t,c){var s=(String(t||"")+" "+String(c||"")).toLowerCase();if(/back|cancel|close|delete|remove|clear|reject|stop|ban|exit/.test(s))return"danger";if(/pay|buy|confirm|verify|paid|add|deposit|shop|claim|yes|receive|wallet|download|update/.test(s))return"success";return"primary";};var T=function(m){try{var o=typeof m==="string"?JSON.parse(m):m;if(!o||!o.inline_keyboard)return m;o.inline_keyboard.forEach(function(row){row.forEach(function(b){if(b.copy_text||b.url||b.callback_data||b.web_app){b.style=R(b.text,b.callback_data||b.url);if(!b.icon_custom_emoji_id&&b.text&&!/^[\u2600-\u27BF\uD83C-\uD83E]/.test(String(b.text).trim())&&!/^[✦✨💎]/.test(b.text))b.text="✦ "+b.text;}});});return typeof m==="string"?JSON.stringify(o):o;}catch(e){return m;}};["sendMessage","editMessageText","editMessageCaption","editMessageReplyMarkup","sendPhoto","sendVideo","sendAnimation","sendDocument"].forEach(function(n){var f=Api[n];if(typeof f!=="function")return;Api[n]=function(p){try{if(p&&p.reply_markup)p.reply_markup=T(p.reply_markup);}catch(e){}return f.apply(Api,arguments);};});Api.__pm=true;})();}catch(__pmE){}15 16 17// 🔑 ADMIN — Add one or many manual keys to a product plan.18// Format:19// /addkey PRODUCT NAME | 1h | KEY120// KEY221// KEY322// Also supports 30m, 7d, 1 Day, 1 Hour, 30 Minutes, etc.23 24try {25  var adminId = Bot.getProperty("owner_id") || "7127818616";26  var isCoAdmin = Bot.getProperty("co_admin_" + String(chat.chatid));27  if ((String(chat.chatid) !== String(adminId) && !Bot.getProperty("co_admin_" + String(chat.chatid))) && !isCoAdmin) {28    Bot.sendMessage("❌ You are not the admin!");29    return;30  }31 32  if (!params) {33    Bot.sendMessage(34      "⚠️ <b>ADD KEY</b>\n\n" +35      "<b>Format:</b>\n<code>/addkey PRODUCT NAME | DURATION | KEY1</code>\n<code>KEY2</code>\n<code>KEY3</code>\n\n" +36      "<b>Duration examples:</b> <code>1d</code>, <code>7d</code>, <code>1h</code>, <code>24h</code>, <code>30m</code>, <code>1 Hour</code>, <code>30 Minutes</code>\n\n" +37      "<i>Har line me ek key add kar sakte hain.</i>",38      { parse_mode: "HTML" }39    );40    return;41  }42 43  var lines = String(params).split("\n");44  var first = lines[0].split("|");45  if (first.length < 3) {46    Bot.sendMessage(47      "❌ <b>Format Error!</b>\nUse:\n<code>/addkey PRODUCT NAME | DURATION | KEY</code>",48      { parse_mode: "HTML" }49    );50    return;51  }52 53  var pNameInput = first[0].trim();54  var durationText = first[1].trim();55  var firstKey = first.slice(2).join("|").trim();56 57  if (!pNameInput || !durationText || !firstKey) {58    Bot.sendMessage("❌ Product, duration aur key teeno required hain.", { parse_mode: "HTML" });59    return;60  }61 62  // Parse duration into value + unit while preserving the exact display label.63  var m = durationText.match(/^([0-9]+(?:\.[0-9]+)?)\s*(d|day|days|h|hr|hrs|hour|hours|m|min|mins|minute|minutes)$/i);64  var value = "";65  var unit = "day";66  if (m) {67    value = m[1];68    var u = m[2].toLowerCase();69    if (/^h/.test(u)) unit = "hour";70    else if (/^m/.test(u)) unit = "minute";71  } else {72    // Backward-compatible labels such as "1_Day".73    var legacy = durationText.match(/^([0-9]+(?:\.[0-9]+)?)_?day$/i);74    if (legacy) {75      value = legacy[1];76      unit = "day";77    } else {78      Bot.sendMessage("❌ Duration samajh nahi aaya. Example: <code>1d</code>, <code>1h</code>, <code>30m</code>.", { parse_mode: "HTML" });79      return;80    }81  }82 83  var productList = Bot.getProperty("stored_products") || [];84  var product = null;85  var prodIdx = -1;86 87  for (var i = 0; i < productList.length; i++) {88    if (productList[i] && productList[i].name &&89        productList[i].name.trim().toLowerCase() === pNameInput.toLowerCase()) {90      product = productList[i];91      prodIdx = i;92      break;93    }94  }95 96  if (!product) {97    Bot.sendMessage("❌ Product <b>" + pNameInput + "</b> nahi mila. Pehle Add Product/Add Plan se product aur duration banao.", { parse_mode: "HTML" });98    return;99  }100 101  // Make sure the requested duration actually exists as a plan.102  var plan = null;103  var planIdx = -1;104  var plans = product.plans || [];105  for (var j = 0; j < plans.length; j++) {106    var pu = plans[j].unit || "day";107    var pv = String(plans[j].days || "").replace(/[^0-9.]/g, "");108    if (pv === String(value) && pu === unit) {109      plan = plans[j];110      planIdx = j;111      break;112    }113    // Legacy plans without unit are Days.114    if (unit === "day" && pu === "day" && pv === String(value)) {115      plan = plans[j];116      planIdx = j;117      break;118    }119  }120 121  if (!plan) {122    Bot.sendMessage(123      "❌ <b>Plan nahi mila!</b>\nProduct: <code>" + product.name + "</code>\nDuration: <code>" + durationText + "</code>\n\n" +124      "Pehle isi duration ka <b>Add Plan</b> banayein.",125      { parse_mode: "HTML" }126    );127    return;128  }129 130  var keysToAdd = [firstKey];131  for (var k = 1; k < lines.length; k++) {132    var keyLine = lines[k].trim();133    if (keyLine) keysToAdd.push(keyLine);134  }135 136  var cleanName = product.name.trim().toUpperCase();137  // Unit-aware stock key prevents 1 Day and 1 Hour keys from mixing.138  var stockKey = "manual_keys_" + cleanName + "_" + value + "_" + unit;139  var stock = Bot.getProperty(stockKey) || [];140  if (typeof stock === "string") {141    try { stock = JSON.parse(stock); } catch (e) {142      stock = stock.split("\n").map(function(x){ return x.trim(); }).filter(Boolean);143    }144  }145  if (!Array.isArray(stock)) stock = [];146 147  // Avoid accidentally adding the same key twice.148  // v63: object-map dedupe (O(n)) — unlimited keys paste/add, koi count limit nahi.149  var seen = {};150  for (var sq = 0; sq < stock.length; sq++) seen[String(stock[sq])] = true;151  var added = 0;152  for (var q = 0; q < keysToAdd.length; q++) {153    var kk = String(keysToAdd[q]);154    if (!seen[kk]) {155      seen[kk] = true;156      stock.push(keysToAdd[q]);157      added++;158    }159  }160  Bot.setProperty(stockKey, stock, "json");161 162  // Keep legacy Day stock synchronized for old purchase flows.163  if (unit === "day") {164    var legacyKey = "manual_keys_" + cleanName + "_" + value;165    Bot.setProperty(legacyKey, stock, "json");166 167    var oldStockKey = "stock_" + product.name.trim() + "_" + value + "_Day";168    Bot.setProperty(oldStockKey, stock, "json");169 170    Bot.setProperty("stock_" + prodIdx + "_" + planIdx, stock, "json");171  }172 173  Bot.sendMessage(174    "<blockquote><b>✅ KEYS ADDED SUCCESSFULLY</b>\n\n" +175    "📦 <b>Product:</b> <code>" + product.name + "</code>\n" +176    "⏳ <b>Duration:</b> <code>" + durationText + "</code>\n" +177    "🔑 <b>New Keys Added:</b> <code>" + added + "</code>\n" +178    "📦 <b>Total Stock:</b> <code>" + stock.length + "</code>\n\n" +179    "<i>Ab customer isi plan ko buy karega to available manual key pehle deliver hogi aur balance/payment accounting existing purchase system ke through chalegi.</i></blockquote>",180    { parse_mode: "HTML" }181  );182 183} catch (err) {184  Bot.sendMessage("⚠️ System Error: " + err.message);185}
commands/_addkey.js · tarunpoonia905/OfcDevShopBot · TeleDevs