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

javascript · 305 lines

Raw
1/**#command2name: /shopmedia3answer: 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// =========================================================18// 🎬 SHOP MEDIA MANAGER (Admin / Co-Admin only)19//   • Welcome GIF / MP4  -> Shop screen (NON ROOT / ANDROID ROOT / iPHONE) ke UPAR dikhta hai20//   • Panel Video Demo -> us panel ke plan/key-kharidne wale screen ke UPAR dikhta hai21//22// Sub-commands (callback_data "/shopmedia <sub> [arg]"):23//   welcome            -> welcome media ka panel24//   prod               -> products ki list (kis product pe video laga hai)25//   pitem <idx>        -> ek product ka panel26//   ask welcome|p<idx> -> upload mode ON (agla GIF/video save hoga)27//   preview <target>   -> admin ko preview bhejta hai28//   rm <target>        -> media hata deta hai29//   close              -> preview message delete30//   save               -> (internal) wildcard (*) se aata hai jab admin ne media bheja31// NOTE: is file me jaan-boojhkar koi `await` use nahi hua (project ke baaki commands jaisa32// hi sync-style), taaki kisi platform quirk se command toote nahi.33// =========================================================34 35try {36  var adminId = String(Bot.getProperty("owner_id") || "7127818616");37  var me = String(chat.chatid);38  var isCo = !!Bot.getProperty("co_admin_" + me);39  if (me !== adminId && !isCo) { Bot.sendMessage("❌ Restricted command! Only Admin can use this."); return; }40 41  function esc(s) { return String(s === undefined || s === null ? "" : s).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); }42  function asObj(v) {43    if (v && typeof v === "object") return v;44    if (typeof v === "string" && v) { try { return JSON.parse(v); } catch (e) {} }45    return null;46  }47  function validMedia(m) { return !!(m && m.file_id && (m.type === "animation" || m.type === "video")); }48  function kindLabel(m) { return m.type === "animation" ? "GIF" : "MP4 Video"; }49  function prodKey(p, i) { return String(p.id || p.name || i).toUpperCase().replace(/[^A-Z0-9_-]/g, "_"); }50  function getProducts() {51    var raw = Bot.getProperty("stored_products");52    if (typeof raw === "string") { try { raw = JSON.parse(raw); } catch (e) { raw = []; } }53    return Array.isArray(raw) ? raw : [];54  }55  function answerCb() {56    var qid = request ? (request.id || (request.callback_query && request.callback_query.id)) : null;57    if (qid) { try { Api.answerCallbackQuery({ callback_query_id: String(qid) }); } catch (e) {} }58  }59  function resolveTarget(t) {60    t = String(t || "");61    if (t === "welcome") return { kind: "welcome", label: "Shop Welcome (Animation 1)", prop: "shop_welcome_media", back: "/shopmedia welcome" };62    if (t === "welcome2") return { kind: "welcome", label: "Shop Welcome (Animation 2)", prop: "shop_welcome_media2", back: "/shopmedia welcome" };63    var m = /^p(\d+)$/.exec(t);64    if (!m) return null;65    var idx = Number(m[1]);66    var p = getProducts()[idx];67    if (!p) return null;68    return { kind: "product", idx: idx, label: String(p.name || ("Product " + (idx + 1))), prop: "product_media_" + prodKey(p, idx), back: "/shopmedia pitem " + idx };69  }70 71  // render: text screen. Callback se aaye to wahi message edit hota hai, warna naya message.72  function render(text, buttons, forceNew) {73    var markup = JSON.stringify({ inline_keyboard: buttons });74    var src = (!forceNew && request && request.message && request.message.message_id) ? request.message : null;75    var srcIsMedia = !!(src && (src.photo || src.video || src.animation || src.document));76    if (src && !srcIsMedia) {77      try { Api.editMessageText({ chat_id: me, message_id: Number(src.message_id), text: text, parse_mode: "HTML", reply_markup: markup }); }78      catch (e1) { Api.sendMessage({ chat_id: me, text: text, parse_mode: "HTML", reply_markup: markup }); }79    } else {80      if (src && srcIsMedia) { try { Api.deleteMessage({ chat_id: me, message_id: Number(src.message_id) }); } catch (e2) {} }81      Api.sendMessage({ chat_id: me, text: text, parse_mode: "HTML", reply_markup: markup });82    }83    answerCb();84  }85 86  function sendPreview(media, caption) {87    var p = {88      chat_id: me, caption: caption, parse_mode: "HTML",89      reply_markup: JSON.stringify({ inline_keyboard: [[{ text: "❌ Close", callback_data: "/shopmedia close", style: "danger" }]] })90    };91    if (media.type === "animation") { p.animation = String(media.file_id); Api.sendAnimation(p); }92    else { p.video = String(media.file_id); p.supports_streaming = true; Api.sendVideo(p); }93  }94 95  var BACK_ADMIN = { text: "⬅️ Admin Panel", callback_data: "/admin", style: "danger", icon_custom_emoji_id: "5893163582194978381" };96 97  // ---- sub-command parse98  var raw = "";99  if (typeof options !== "undefined" && options && options.action) raw = String(options.action);100  else if (typeof params !== "undefined" && params) raw = String(params);101  else {102    var cbd = (request && request.callback_query && request.callback_query.data) ? request.callback_query.data : ((request && request.data) ? request.data : "");103    raw = String(cbd).replace(/^\/?shopmedia\s*/i, "");104  }105  var parts = raw.trim().split(/\s+/);106  var sub = (parts[0] || "welcome").toLowerCase();107  var arg = parts[1] || "";108 109  // ============================================================ WELCOME PANEL110  if (sub === "welcome") {111    User.setProperty("shopmedia_step", null, "json");112    var wm = asObj(Bot.getProperty("shop_welcome_media"));113    var wmOk = validMedia(wm);114    var wm2 = asObj(Bot.getProperty("shop_welcome_media2"));115    var wm2Ok = validMedia(wm2);116    var a2On = (Bot.getProperty("shop_welcome_anim2_on") === true) && wm2Ok;117    var wText =118      "<blockquote><b>🎬 SHOP WELCOME GIF / VIDEO</b></blockquote>\n\n" +119      "Ye GIF/MP4 <b>Shop / Store</b> kholte hi us screen ke <b>upar</b> dikhega jahan <b>NON ROOT / ANDROID ROOT / iPHONE</b> choose karte hain.\n\n" +120      "1️⃣ <b>Animation 1</b> (normal): " + (wmOk ? "✅ Set (" + kindLabel(wm) + ")" : "❌ Not set") + "\n" +121      "2️⃣ <b>Animation 2</b>: " + (wm2Ok ? "✅ Set (" + kindLabel(wm2) + ")" : "❌ Not set") + "\n\n" +122      "▶️ <b>Abhi chal raha hai:</b> " + (a2On ? "Animation 2" : "Animation 1") + "\n" +123      "<i>Animation 2 ON karoge to wo chalega, OFF karoge to Animation 1 hi chalta rahega.</i>";124    var wBtns = [[{ text: wmOk ? "🔄 Replace Animation 1" : "📤 Upload Animation 1", callback_data: "/shopmedia ask welcome", style: "success", icon_custom_emoji_id: "5348392971207194994" }]];125    if (wmOk) {126      wBtns.push([127        { text: "👁 Preview 1", callback_data: "/shopmedia preview welcome", style: "primary" },128        { text: "🗑 Remove 1", callback_data: "/shopmedia rm welcome", style: "danger", icon_custom_emoji_id: "6143299028655280273" }129      ]);130    }131    wBtns.push([{ text: wm2Ok ? "🔄 Replace Animation 2" : "📤 Upload Animation 2", callback_data: "/shopmedia ask welcome2", style: "success", icon_custom_emoji_id: "5348392971207194994" }]);132    if (wm2Ok) {133      wBtns.push([134        { text: "👁 Preview 2", callback_data: "/shopmedia preview welcome2", style: "primary" },135        { text: "🗑 Remove 2", callback_data: "/shopmedia rm welcome2", style: "danger", icon_custom_emoji_id: "6143299028655280273" }136      ]);137    }138    wBtns.push([{ text: "Animation 2: " + (a2On ? "ON ✅" : "OFF"), callback_data: "/shopmedia toggle2", style: a2On ? "success" : "primary" }]);139    wBtns.push([BACK_ADMIN]);140    render(wText, wBtns);141    return;142  }143 144  // ============================================================ ANIMATION 2 ON/OFF145  if (sub === "toggle2") {146    var t2Media = asObj(Bot.getProperty("shop_welcome_media2"));147    var t2Now = (Bot.getProperty("shop_welcome_anim2_on") === true);148    if (!t2Now && !validMedia(t2Media)) {149      var t2q = request ? (request.id || (request.callback_query && request.callback_query.id)) : null;150      if (t2q) { try { Api.answerCallbackQuery({ callback_query_id: String(t2q), text: "⚠️ Pehle Animation 2 upload karo", show_alert: true }); } catch (e) {} }151      return;152    }153    Bot.setProperty("shop_welcome_anim2_on", !t2Now, "boolean");154    Bot.run({ command: "/shopmedia", options: { action: "welcome" } });155    return;156  }157 158  // ============================================================ PRODUCT LIST159  if (sub === "prod") {160    User.setProperty("shopmedia_step", null, "json");161    var prods = getProducts();162    var pBtns = [];163    for (var i = 0; i < prods.length; i++) {164      var pr = prods[i];165      if (!pr) continue;166      var has = validMedia(asObj(Bot.getProperty("product_media_" + prodKey(pr, i))));167      pBtns.push([{168        text: (has ? "✅ " : "➕ ") + String(pr.name || ("Product " + (i + 1))),169        callback_data: "/shopmedia pitem " + i,170        style: has ? "success" : "primary"171      }]);172    }173    if (prods.length === 0) pBtns.push([{ text: "No Products Found", callback_data: "/shopmedia prod", style: "primary" }]);174    pBtns.push([BACK_ADMIN]);175    render(176      "<blockquote><b>PANEL VIDEO DEMO</b></blockquote>\n\n" +177      "Panel choose karo. Uska Panel Video Demo (Video/GIF) us panel ke <b>plan / key kharidne wale screen ke upar</b> dikhega.\n\n" +178      "✅ = video laga hai   ➕ = abhi nahi laga",179      pBtns180    );181    return;182  }183 184  // ============================================================ ONE PRODUCT PANEL185  if (sub === "pitem") {186    User.setProperty("shopmedia_step", null, "json");187    var tgP = resolveTarget("p" + arg);188    if (!tgP) { render("⚠️ Product nahi mila. List dobara kholo.", [[{ text: "⬅️ Back", callback_data: "/shopmedia prod", style: "danger" }]]); return; }189    var pm = asObj(Bot.getProperty(tgP.prop));190    var pmOk = validMedia(pm);191    var pText =192      "<blockquote><b>" + esc(tgP.label).toUpperCase() + " — PANEL VIDEO DEMO</b></blockquote>\n\n" +193      "Is product ke key-kharidne (plan list) screen ke upar ye video/GIF dikhega.\n\n" +194      "📌 <b>Status:</b> " + (pmOk ? "✅ Set (" + kindLabel(pm) + ")" : "❌ Not set");195    var pBtn2 = [[{ text: pmOk ? "🔄 Replace Video / GIF" : "📤 Upload Video / GIF", callback_data: "/shopmedia ask p" + tgP.idx, style: "success", icon_custom_emoji_id: "5348392971207194994" }]];196    if (pmOk) {197      pBtn2.push([198        { text: "👁 Preview", callback_data: "/shopmedia preview p" + tgP.idx, style: "primary" },199        { text: "🗑 Remove", callback_data: "/shopmedia rm p" + tgP.idx, style: "danger", icon_custom_emoji_id: "6143299028655280273" }200      ]);201    }202    pBtn2.push([{ text: "⬅️ Products", callback_data: "/shopmedia prod", style: "danger", icon_custom_emoji_id: "5893163582194978381" }]);203    render(pText, pBtn2);204    return;205  }206 207  // ============================================================ ASK (upload mode)208  if (sub === "ask") {209    var tgA = resolveTarget(arg);210    if (!tgA) { render("⚠️ Target nahi mila.", [[BACK_ADMIN]]); return; }211    User.setProperty("shopmedia_step", { prop: tgA.prop, label: tgA.label, back: tgA.back, kind: tgA.kind }, "json");212    render(213      "<blockquote><b>📤 UPLOAD — " + esc(tgA.label).toUpperCase() + "</b></blockquote>\n\n" +214      "Ab yahin chat me <b>GIF</b> ya <b>MP4 video</b> bhejo.\n\n" +215      "⚠️ <b>Video / GIF</b> ke roop me bhejna (attach → Gallery). <b>File / Document</b> ke roop me mat bhejna, wo upar nahi dikhta.\n" +216      "❌ Wapas jaane ke liye <code>cancel</code> likho ya neeche Cancel dabao.",217      [[{ text: "❌ Cancel", callback_data: tgA.back, style: "danger", icon_custom_emoji_id: "5893163582194978381" }]]218    );219    return;220  }221 222  // ============================================================ SAVE (admin ne media bheja)223  if (sub === "save") {224    var step = asObj(User.getProperty("shopmedia_step"));225    if (!step || !step.prop) return;226 227    var cands = [];228    if (typeof request !== "undefined" && request) {229      cands.push(request);230      if (request.message) cands.push(request.message);231      if (request.update && request.update.message) cands.push(request.update.message);232    }233    if (typeof update !== "undefined" && update && update.message) cands.push(update.message);234 235    var found = null, fileAsDoc = false;236    for (var k = 0; k < cands.length && !found; k++) {237      var c = cands[k];238      if (!c) continue;239      if (c.animation && c.animation.file_id) found = { type: "animation", file_id: String(c.animation.file_id) };240      else if (c.video && c.video.file_id) found = { type: "video", file_id: String(c.video.file_id) };241      else if (c.document && c.document.file_id && /^(video\/|image\/gif)/i.test(String(c.document.mime_type || ""))) fileAsDoc = true;242    }243 244    if (!found) {245      var typed = (typeof message !== "undefined" && message) ? String(message).trim() : "";246      if (/^\/?cancel$/i.test(typed)) {247        User.setProperty("shopmedia_step", null, "json");248        render("❎ Cancel ho gaya.", [[{ text: "⬅️ Back", callback_data: step.back || "/shopmedia welcome", style: "danger" }]], true);249        return;250      }251      render(252        fileAsDoc253          ? "⚠️ Ye <b>file/document</b> ke roop me aaya. Please wahi video/GIF dobara <b>Video / GIF</b> ke roop me bhejo (Gallery se, 'Send as file' OFF)."254          : "⚠️ Mujhe GIF ya MP4 video chahiye. Dobara bhejo, ya <code>cancel</code> likho.",255        [[{ text: "❌ Cancel", callback_data: step.back || "/shopmedia welcome", style: "danger" }]],256        true257      );258      return;259    }260 261    Bot.setProperty(step.prop, { type: found.type, file_id: found.file_id, saved_at: new Date().toISOString() }, "json");262    User.setProperty("shopmedia_step", null, "json");263 264    render(265      "✅ <b>Saved!</b> " + (found.type === "animation" ? "GIF" : "MP4 Video") + " ab <b>" + esc(step.label) + "</b> par lag gaya.\n\nNeeche preview aa raha hai.",266      [[{ text: "⬅️ Back", callback_data: step.back || "/shopmedia welcome", style: "danger", icon_custom_emoji_id: "5893163582194978381" }]],267      true268    );269    sendPreview(found, "👁 <b>Preview</b> — " + esc(step.label));270    return;271  }272 273  // ============================================================ PREVIEW / REMOVE / CLOSE274  if (sub === "preview") {275    var tgV = resolveTarget(arg);276    var vm = tgV ? asObj(Bot.getProperty(tgV.prop)) : null;277    if (!tgV || !validMedia(vm)) { answerCb(); return; }278    sendPreview(vm, "👁 <b>Preview</b> — " + esc(tgV.label));279    answerCb();280    return;281  }282 283  if (sub === "rm") {284    var tgR = resolveTarget(arg);285    if (tgR) Bot.setProperty(tgR.prop, null, "json");286    if (tgR && tgR.prop === "shop_welcome_media2") Bot.setProperty("shop_welcome_anim2_on", false, "boolean");287    // panel dobara dikhao (ab "Not set")288    if (tgR && tgR.kind === "product") Bot.run({ command: "/shopmedia", options: { action: "pitem " + tgR.idx } });289    else Bot.run({ command: "/shopmedia", options: { action: "welcome" } });290    return;291  }292 293  if (sub === "close") {294    if (request && request.message && request.message.message_id) {295      try { Api.deleteMessage({ chat_id: me, message_id: Number(request.message.message_id) }); } catch (e3) {}296    }297    answerCb();298    return;299  }300 301  answerCb();302 303} catch (err) {304  Bot.sendMessage("⚠️ Shop Media Error: " + err.message);305}
commands/_shopmedia.js · tarunpoonia905/OfcDevShopBot · TeleDevs