tarunpoonia905/OfcDevShopBotPublic · Bot Template
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
commands/_addkey.js
javascript · 185 lines
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}