devbro468/Dev_x_store_botPublic · Bot Template

AIThis bot operates a digital storefront (DEV X STORE) selling subscription-based products — likely game hacks, accounts, or access keys — categorized by platform (Android Root, Non-Root, iPhone). It features a reseller program with discounted pricing, a dual-currency wallet (INR balance + Telegram Stars/XTR), and a full admin/co-admin panel for managing products, plans, per-plan pricing, stock (keys/accounts), coupons, and API endpoints. Purchases flow through a plan selection screen offering wallet payment, Stars invoices (sendInvoice with XTR currency), and coupon application. Successful Stars payments are handled via successful_payment webhook, crediting wallet or delivering keys directly. Admin tools include user listing with chunked messaging, stock viewing/deletion with inline keyboards, co-admin management, and API registry updates. The bot registers users on first interaction and

Commercecommercedigital-goodsstars-paymentreseller-systemadmin-panelstock-management
ProfileTelegram
119 commands0 envUpdated 15d agoCreated Aug 23, 2026
Back to folder

commands/_back.js

javascript · 157 lines

Raw
1/**#command2name: /back3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12// =========================================================13// 🚀 PREMIUM STORE MASTER DASHBOARD (UPDATED WITH LUDO SPIN)14// STATUS: 100% PRODUCTION READY WITH LIVE BUTTON STYLES15// =========================================================16 17try {18  var userId = user.telegramid;19 20  // 💾 BROADCAST SYSTEM: Safe Loop Core21  var userList = [];22  try {23    userList = Bot.getProperty("all_users_list") || [];24    if (!Array.isArray(userList)) { userList = []; }25  } catch (propErr) {26    userList = [];27  }28 29  var userExists = false;30  for (var i = 0; i < userList.length; i++) {31    if (String(userList[i]) === String(userId)) {32      userExists = true;33      break;34    }35  }36  if (!userExists) {37    userList.push(String(userId));38    Bot.setProperty("all_users_list", userList, "json");39  }40 41  // 📊 REAL BALANCE FETCH42  var userBal = "0.00";43  try {44    var res = 0;45    if (Libs && Libs.ResourcesLib) {46      res = Libs.ResourcesLib.userRes("balance").value() || 0;47    }48    var adminBal = Bot.getProperty("balance" + userId) || 0;49    userBal = (Number(res) + Number(adminBal)).toFixed(2);50  } catch (balErr) {51    var fallbackBal = Bot.getProperty("balance" + userId) || 0;52    userBal = Number(fallbackBal).toFixed(2);53  }54 55  // 💎 WELCOME MESSAGE EMOJIS (Sirf Text Message ke liye)56  var EMJ_HEADER_ROCKET = "<tg-emoji emoji-id='5217822164362739968'>🚀</tg-emoji>";57  var EMJ_HEADER_NEW    = "<tg-emoji emoji-id='6194809138371904539'>✨</tg-emoji>"; 58  var EMJ_HEADER_SHIELD = "<tg-emoji emoji-id='6113743082358841933'>🔰</tg-emoji>";59 60  // Welcome message ke saare items ke variables:61  var MSG_EMJ_STORE     = "<tg-emoji emoji-id='5866053971960929280'>🛒</tg-emoji>";62  var MSG_EMJ_FFID      = "<tg-emoji emoji-id='5334890573281114250'>🎮</tg-emoji>"; 63  var MSG_EMJ_PROFILE   = "<tg-emoji emoji-id='5260399854500191689'>🔰</tg-emoji>";64  var MSG_EMJ_ADDBAL    = "<tg-emoji emoji-id='6147815702163102310'>✨</tg-emoji>";65  var MSG_EMJ_HISTORY   = "<tg-emoji emoji-id='6113743082358841933'>🔰</tg-emoji>";66  var MSG_EMJ_LUDO      = "<tg-emoji emoji-id='5371043439020353782'>🎲</tg-emoji>"; // Ludo Spin Custom Emoji67  var MSG_EMJ_TUTORIAL  = "<tg-emoji emoji-id='5258077307985207053'>📹</tg-emoji>";68  var MSG_EMJ_PROOF     = "<tg-emoji emoji-id='5330237710655306682'>✅</tg-emoji>"; // Payment Proof Custom Emoji69  var MSG_EMJ_SUPPORT   = "<tg-emoji emoji-id='5436113877181941026'>🔰</tg-emoji>";70 71  // Naye aur Updated Emojis72  var EMJ_PREMIUM_MENU  = "<tg-emoji emoji-id='5406745015365943482'>✨</tg-emoji>";73  var EMJ_YOUR_BALANCE  = "<tg-emoji emoji-id='5231200819986047254'>💰</tg-emoji>";74  var EMJ_GET_STARTED   = "<tg-emoji emoji-id='6057415823222379852'>👇</tg-emoji>";75 76  // 📝 FULL WELCOME MESSAGE — synced with /start design (DEV MODZ STORE PANEL)77  var welcomeMessage =78    "<tg-emoji emoji-id=\"6266967801580231067\">💎</tg-emoji> <tg-emoji emoji-id=\"5866053971960929280\">🏪</tg-emoji> <b>— DEV MODZ STORE PANEL —</b> <tg-emoji emoji-id=\"5866053971960929280\">🏪</tg-emoji> <tg-emoji emoji-id=\"6266967801580231067\">💎</tg-emoji>\n\n" +79    "<tg-emoji emoji-id=\"6093677128295914531\">🎉</tg-emoji> <b>Hello, " + ((user && user.first_name) ? user.first_name.toUpperCase() : "RESELLER") + "!</b>\n\n" +80    "<tg-emoji emoji-id=\"6080228009439141516\">💧</tg-emoji> <b>Genuine, limited-stock books. Instant delivery.</b>\n\n" +81    "<tg-emoji emoji-id=\"6093591495237967001\">🌐</tg-emoji> Wide product catalog\n" +82    "<tg-emoji emoji-id=\"6215386799133433653\">🔑</tg-emoji> Instant delivery on payment\n" +83    "<tg-emoji emoji-id=\"6312263493051489212\">💰</tg-emoji> Multiple payment gateways\n" +84    "<tg-emoji emoji-id=\"6100170496077204999\">👑</tg-emoji> 24/7 admin support\n\n" +85    "<i>Balance: ₹" + userBal + "</i>\n\n" +86    "<i>Tap any button below to begin:</i> " + EMJ_GET_STARTED;87 88  // 🎨 KEYBOARD — same layout as /start89  var multiColorKeyboard = [90    [{ text: "Shop Now", callback_data: "/buy_hack", style: "primary", icon_custom_emoji_id: "5866053971960929280" }],91    [92      { text: "Profile", callback_data: "/profile", style: "primary", icon_custom_emoji_id: "5260399854500191689" },93      { text: "Add Balance", callback_data: "/addfund", style: "success", icon_custom_emoji_id: "6147815702163102310" }94    ],95    [96      { text: "My Keys", callback_data: "/mykey", style: "primary", icon_custom_emoji_id: "6113743082358841933" },97      { text: "How to use", callback_data: "/how", style: "danger", icon_custom_emoji_id: "6080214566191505147" }98    ],99    [100      { text: "Support", callback_data: "/support", style: "danger", icon_custom_emoji_id: "5436113877181941026" }101    ],102    [{ text: "Payment Proofs", url: (Bot.getProperty("payment_proof_link") || "https://t.me/DevModz_Proof"), style: "success", icon_custom_emoji_id: "5330237710655306682" }]103  ];104 105  // 👑 Conditional Reseller Upgrade button106  if (Bot.getProperty("reseller_system_enabled") && !Bot.getProperty("is_reseller_" + userId)) {107    multiColorKeyboard.push([108      { text: "Reseller Upgrade", callback_data: "/reseller_upgrade", style: "success", icon_custom_emoji_id: "6102856637343600044" }109    ]);110  }111 112  // 🔄 Safe Callback Loading Controller113  var queryId = null;114  if (request) {115    if (request.id) { queryId = request.id; }116    else if (request.callback_query && request.callback_query.id) { queryId = request.callback_query.id; }117  }118 119  if (queryId) {120    try { Api.answerCallbackQuery({ callback_query_id: queryId }); } catch(qErr){}121  }122 123  // ⚡ Native Execution Route (Send vs Edit Handler)124  // ✅ BUG FIX: agar previous message ek PHOTO thi (jaise DP-attached Profile),125  // Telegram editMessageText use hi nahi kar sakta uspar — isi wajah se Profile126  // se "Back" click karne par kuch hota hi nahi tha. Ab photo ho to delete karke127  // fresh text message bheja jaata hai.128  if (request && request.message && request.message.message_id) {129    if (request.message.photo) {130      try { Api.deleteMessage({ chat_id: chat.chatid, message_id: request.message.message_id }); } catch (delErr) {}131      Api.sendMessage({132        chat_id: chat.chatid,133        text: welcomeMessage,134        parse_mode: "HTML",135        reply_markup: JSON.stringify({ inline_keyboard: multiColorKeyboard })136      });137    } else {138      Api.editMessageText({139        chat_id: chat.chatid,140        message_id: request.message.message_id,141        text: welcomeMessage,142        parse_mode: "HTML",143        reply_markup: JSON.stringify({ inline_keyboard: multiColorKeyboard })144      });145    }146  } else {147    Api.sendMessage({148      chat_id: chat.chatid,149      text: welcomeMessage,150      parse_mode: "HTML",151      reply_markup: JSON.stringify({ inline_keyboard: multiColorKeyboard })152    });153  }154 155} catch (globalException) {156  Bot.sendMessage("🛑 <b>Dashboard Debug Error:</b> <code>" + globalException.message + "</code>", { parse_mode: "HTML" });157}