ayushyadav7970824760/goldensellingstore_botPublic · Bot Template

AIThis Telegram store bot lets customers browse digital products and plans, apply coupons, add funds via UPI, and receive purchased keys. It includes a full admin panel for managing products, reordering items, setting reseller prices, viewing and removing key stock, configuring UPI payment details and update links, and checking user balances. Co-admins and resellers are supported, and support tickets are forwarded to the admin.

Commercedigital_storeadmin_panelupi_paymentsresellercouponskey_stock
ProfileTelegram
146 commands0 envUpdated 2d agoCreated Sep 5, 2026
Back to folder

commands/_onContactRecieved.js

javascript · 197 lines

Raw
1/**#command2name: /onContactRecieved3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12try {13  var userId = user.telegramid;14  var contactData = request && request.message ? request.message.contact : null;15 16  if (!contactData) {17    Bot.sendMessage("⚠️ Contact data nahi mila, dobara try karein.");18    return;19  }20 21  if (String(contactData.user_id) !== String(userId)) {22    Api.sendMessage({23      chat_id: chat.chatid,24      text: "⚠️ <b>Please share your own contact</b> to verify.",25      parse_mode: "HTML",26      reply_markup: JSON.stringify({27        keyboard: [[{ text: "✅ Verify Account", request_contact: true }]],28        resize_keyboard: true,29        one_time_keyboard: true30      })31    });32    return;33  }34 35  Bot.setProperty("verified_" + userId, true, "boolean");36  User.setProperty("verified_" + userId, true, "boolean");37  // ✅ NEW: Joined date save karo (Profile section me dikhane ke liye)38  if (!Bot.getProperty("joined_date_" + userId)) {39    Bot.setProperty("joined_date_" + userId, new Date().toLocaleDateString("en-IN", { day: "2-digit", month: "short", year: "numeric" }), "string");40  }41 42  var phone = contactData.phone_number || "N/A";43 44  Api.sendMessage({45    chat_id: chat.chatid,46    text: "<blockquote><tg-emoji emoji-id='5330237710655306682'>✅</tg-emoji> <b>Account Verified Successfully!</b>\n<tg-emoji emoji-id='6266994443262367483'>😊</tg-emoji> <i>Welcome! Loading your menu...</i></blockquote>",47    parse_mode: "HTML",48    reply_markup: JSON.stringify({ remove_keyboard: true })49  });50 51  var adminId = "8477746023";52  var uName = (user && user.first_name) ? user.first_name : "Unknown";53  var uUsername = (user && user.username) ? "@" + user.username : "No Username";54 55  var adminAlert = "<blockquote>" +56    "<tg-emoji emoji-id='6113743082358841933'>🔰</tg-emoji> <b>NEW USER VERIFIED</b>\n" +57    "━━━━━━━━━━━━━━━━━━━━━━━━━━\n" +58    "👤 <b>Name:</b> " + uName + " (" + uUsername + ")\n" +59    "🆔 <b>User ID:</b> <code>" + userId + "</code>\n" +60    "📞 <b>Phone:</b> <code>" + phone + "</code>\n" +61    "━━━━━━━━━━━━━━━━━━━━━━━━━━\n" +62    "✅ <i>Status: Verified via Contact Share</i>" +63    "</blockquote>";64 65  Api.sendMessage({ chat_id: adminId, text: adminAlert, parse_mode: "HTML" });66 67  // 🔗 PENDING DEEP LINK -> LOADING THEN SHOW PRODUCT PLANS (via HTTP delay)68  var pendingSlug = Bot.getProperty("pending_deeplink_" + userId) || User.getProperty("pending_deeplink_" + userId) || "";69 70  if (pendingSlug !== "") {71    var productList = Bot.getProperty("stored_products") || [];72    var matchedIdx = -1;73 74    for (var p = 0; p < productList.length; p++) {75      var slug = String(productList[p].name || "").toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");76      if (slug === pendingSlug.toLowerCase()) {77        matchedIdx = p;78        break;79      }80    }81 82    Bot.setProperty("pending_deeplink_" + userId, null, "string");83    User.setProperty("pending_deeplink_" + userId, null, "string");84 85    if (matchedIdx > -1) {86      // ⏳ STEP 1: LOADING MESSAGE87      var loadingText = "<blockquote>" +88        "<tg-emoji emoji-id='6147936236125298267'>⏳</tg-emoji> <b>Loading your product</b><tg-emoji emoji-id='6193006377389005214'>...</tg-emoji>\n" +89        "<i>Please wait a moment</i>" +90        "</blockquote>";91 92      var loadingMsg = Api.sendMessage({93        chat_id: chat.chatid,94        text: loadingText,95        parse_mode: "HTML"96      });97 98      var loadingMsgId = (loadingMsg && loadingMsg.result && loadingMsg.result.message_id) ? loadingMsg.result.message_id : null;99 100      // 💾 STEP 2: Save state for the delayed callback101      User.setProperty("dl_wait_msgid", loadingMsgId, "number");102      User.setProperty("dl_wait_prodidx", matchedIdx, "number");103      User.setProperty("dl_wait_chatid", String(chat.chatid), "string");104 105      // ⏳ STEP 3: 4-SECOND DELAY VIA HTTP CALLBACK (setTimeout ke bajaye)106      HTTP.get({107        url: "https://httpbin.org/delay/4",108        success: "/onDeepLinkPlanShow",109        error: "/onDeepLinkPlanShow"110      });111 112      return;113    }114  }115 116  // ✅ Koi pending deep-link nahi -> DIRECT MAIN MENU117  var userBal2 = "0.00";118  try {119    var res2 = 0;120    if (Libs && Libs.ResourcesLib) { res2 = Libs.ResourcesLib.userRes("balance").value() || 0; }121    var adminBal2 = Bot.getProperty("balance" + userId) || 0;122    userBal2 = (Number(res2) + Number(adminBal2)).toFixed(2);123  } catch (balErr2) {124    var fallbackBal2 = Bot.getProperty("balance" + userId) || 0;125    userBal2 = Number(fallbackBal2).toFixed(2);126  }127 128  var DEFAULT_WELCOME_TXT2 =129    "🛍️ <b>— GOLDEN MODS STORE —</b> 🛍️\n\n" +130    "👇 Welcome, <b>{name}</b> 😇! 🙂\n\n" +131    "🛍️ <b>— STORE HIGHLIGHTS —</b> 🛍️\n\n" +132    "⬇️ Premium Game Keys\n" +133    "✅ Instant Delivery 24/7\n" +134    "🔒 100% Secure Payment\n" +135    "📊 Best Prices Guaranteed\n" +136    "🎁 Referral Rewards\n" +137    "✉️ Professional Support";138  var welcomeHeaderTxt2 = (Bot.getProperty("custom_welcome_text") || DEFAULT_WELCOME_TXT2)139    .replace(/\{name\}/g, ((user && user.first_name) ? user.first_name.toUpperCase() : "RESELLER"));140 141  var welcomeMessage2 =142    welcomeHeaderTxt2 + "\n\n" +143    "━━━━━━━━━━━━━━━━━━━━━\n" +144    "👤 <b>User ID:</b> " + userId + "\n" +145    "💵 <b>Wallet Balance:</b> ₹" + userBal2 + "\n" +146    "━━━━━━━━━━━━━━━━━━━━━\n\n" +147    "👇 <b>Select any option below to get started!</b> 👇";148 149  var MENU_EMOJI = {150    shop: Bot.getProperty("menu_emoji_shop") || "5866053971960929280",151    download: Bot.getProperty("menu_emoji_download") || "5208790878931415568",152    addfund: Bot.getProperty("menu_emoji_addfund") || "5409048419211682843",153    profile: Bot.getProperty("menu_emoji_profile") || "6145572393499762737",154    refer: Bot.getProperty("menu_emoji_refer") || "5823654080584618403",155    how: Bot.getProperty("menu_emoji_how") || "6192842983948162969",156    support: Bot.getProperty("menu_emoji_support") || "6267129592998270736",157    dailygift: Bot.getProperty("menu_emoji_dailygift") || "6194922667242429131",158    proof: Bot.getProperty("menu_emoji_proof") || "5330237710655306682",159    reseller: Bot.getProperty("menu_emoji_reseller") || "6102856637343600044"160  };161 162  // ONE canonical main menu. All entry points (/start, /menu, /back and163  // post-verification) use the same keyboard so the layout never switches.164  var multiColorKeyboard2 = [165    [{ text: "𝑩𝒖𝒚 𝑵𝒐𝒘", callback_data: "/buy_hack", style: "danger", icon_custom_emoji_id: MENU_EMOJI.shop }],166    [167      { text: "𝑪𝒉𝒆𝒄𝒌 𝑼𝒑𝒅𝒂𝒕𝒆", callback_data: "/download_updates", style: "success", icon_custom_emoji_id: MENU_EMOJI.download },168      { text: "𝑨𝒅𝒅 𝑩𝒂𝒍𝒂𝒏𝒄𝒆", callback_data: "/addfund", style: "primary", icon_custom_emoji_id: MENU_EMOJI.addfund }169    ],170    [{ text: "𝑴𝒚 𝑷𝒓𝒐𝒇𝒊𝒍𝒆 + 𝑨𝒍𝒍 𝑯𝒊𝒔𝒕𝒐𝒓𝒚", callback_data: "/profile", style: "success", icon_custom_emoji_id: MENU_EMOJI.profile }],171    [172      { text: "𝑹𝒆𝒇𝒆𝒓 𝑨𝒏𝒅 𝑬𝒂𝒓𝒏", callback_data: "/refer", style: "success", icon_custom_emoji_id: MENU_EMOJI.refer },173      { text: "𝑯𝒐𝒘 𝑻𝒐 𝑼𝒔𝒆 𝑩𝒐𝒕", callback_data: "/how", style: "primary", icon_custom_emoji_id: MENU_EMOJI.how }174    ],175    [176      { text: "𝑺𝒖𝒑𝒑𝒐𝒓𝒕", callback_data: "/support", style: "danger", icon_custom_emoji_id: MENU_EMOJI.support },177      { text: "𝑫𝒂𝒊𝒍𝒚 𝑮𝒊𝒇𝒕", callback_data: "/dailygift", style: "success", icon_custom_emoji_id: MENU_EMOJI.dailygift }178    ],179    [{ text: "𝑷𝒂𝒚𝒎𝒆𝒏𝒕 𝑷𝒓𝒐𝒐𝒇𝒔", url: (Bot.getProperty("payment_proof_link") || "https://t.me/GaluModz_Proof"), style: "success", icon_custom_emoji_id: MENU_EMOJI.proof }]180  ];181 182  if (Bot.getProperty("reseller_system_enabled") && !Bot.getProperty("is_reseller_" + userId)) {183    multiColorKeyboard2.push([184      { text: "𝑹𝒆𝒔𝒆𝒍𝒍𝒆𝒓 𝑼𝒑𝒈𝒓𝒂𝒅𝒆", callback_data: "/reseller_upgrade", style: "success", icon_custom_emoji_id: MENU_EMOJI.reseller }185    ]);186  }187 188  Api.sendMessage({189    chat_id: chat.chatid,190    text: welcomeMessage2,191    parse_mode: "HTML",192    reply_markup: JSON.stringify({ inline_keyboard: multiColorKeyboard2 })193  });194 195} catch (err) {196  Bot.sendMessage("⚠️ System Error: " + err.message);197}