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

javascript · 86 lines

Raw
1/**#command2name: /admin_product_detail3answer: 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 17try {18  var adminId = String(Bot.getProperty("owner_id") || "7127818616");19  var me = String(chat.chatid);20  var isCo = !!Bot.getProperty("co_admin_" + me);21  if (me !== adminId && !isCo) { Bot.sendMessage("❌ Restricted command!"); return; }22 23  function esc(s) { return String(s === undefined || s === null ? "" : s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); }24 25  var prodIdx = Number(String(params || "").trim().split(" ")[0]);26  var productList = Bot.getProperty("stored_products") || [];27  var product = productList[prodIdx];28 29  if (!product) {30    Bot.sendMessage("❌ Product #" + prodIdx + " nahi mila (shayad delete ho chuka hai). Manage Products refresh karo.");31    return;32  }33 34  var cleanName = String(product.name || "").trim().toUpperCase();35  var plans = product.plans || [];36 37  var text = "📦 <b>" + esc(product.name) + "</b>  <code>(#" + prodIdx + ")</code>\n━━━━━━━━━━━━━━━━━━━━━\n\n" +38    "🔗 <b>Maintenance Link:</b> " + (product.maintenance_link ? esc(product.maintenance_link) : "<i>Not set</i>") + "\n" +39    "🔘 <b>Button:</b> <code>" + esc(product.maintenance_link_text || "📥 Update Files") + "</code>\n\n";40 41  if (!plans.length) {42    text += "⚠️ <b>Is product ke koi plans nahi hain!</b>\n<i>Isi wajah se buy karte waqt \"Product or Plan configuration missing\" error aata hai — pehle Add Plan se ek plan banao.</i>";43  } else {44    for (var j = 0; j < plans.length; j++) {45      var pl = plans[j];46      if (!pl) {47        text += "<b>Plan #" + j + ":</b> ⚠️ <i>khali/corrupt entry</i>\n\n";48        continue;49      }50      var unit = pl.unit || "day";51      var durLabel = pl.durationDisplay || (String(pl.days) + " " + unit);52      var stockKey = "manual_keys_" + cleanName + "_" + String(pl.days) + "_" + unit;53      var stockArr = Bot.getProperty(stockKey) || [];54      var pid = pl.pid || pl.product_id || pl.variant_id || "";55      text += "<b>Plan #" + j + " — " + esc(durLabel) + "</b>\n" +56        "💰 Price: ₹" + (pl.normal_price !== undefined ? pl.normal_price : "?") +57        "  |  👑 Reseller: ₹" + (pl.reseller_price !== undefined ? pl.reseller_price : "?") + "\n" +58        "🆔 PID: <code>" + (pid ? esc(pid) : "⚠️ Not set (manual-keys-only plan)") + "</code>\n" +59        "🔑 Manual stock: <b>" + stockArr.length + "</b> key" + (stockArr.length === 1 ? "" : "s") + "\n\n";60    }61  }62 63  var kb = [];64  for (var k = 0; k < plans.length; k++) {65    if (!plans[k]) continue;66    var pdur = plans[k].durationDisplay || (String(plans[k].days) + " " + (plans[k].unit || "day"));67    kb.push([{ text: "🗑 Delete Plan: " + pdur, callback_data: "/admin_delete_plan " + prodIdx + " " + k, style: "danger" }]);68  }69  kb.push([{ text: "🗑 Delete Entire Product", callback_data: "/admin_delete_product_confirm " + prodIdx, style: "danger" }]);70  kb.push([{ text: "🔙 Back to Product List", callback_data: "/admin_manage_products", style: "danger" }]);71 72  var mid = (request && request.message && request.message.message_id) ? request.message.message_id :73            (request && request.callback_query && request.callback_query.message && request.callback_query.message.message_id);74  var qid = (request && (request.id || (request.callback_query && request.callback_query.id))) || null;75 76  if (mid) {77    try { Api.editMessageText({ chat_id: me, message_id: Number(mid), text: text, parse_mode: "HTML", reply_markup: JSON.stringify({ inline_keyboard: kb }) }); }78    catch (e) { Api.sendMessage({ chat_id: me, text: text, parse_mode: "HTML", reply_markup: JSON.stringify({ inline_keyboard: kb }) }); }79  } else {80    Api.sendMessage({ chat_id: me, text: text, parse_mode: "HTML", reply_markup: JSON.stringify({ inline_keyboard: kb }) });81  }82  if (qid) { try { Api.answerCallbackQuery({ callback_query_id: String(qid) }); } catch (e) {} }83 84} catch (err) {85  Bot.sendMessage("⚠️ Error: " + err.message);86}
commands/_admin_product_detail.js · tarunpoonia905/OfcDevShopBot · TeleDevs