kkapil9112/Hguuuuuv45botPublic · Bot Template

AITelegram commerce bot for an admin-managed digital store: admins create categories, products, time-based plans, stock entries and license keys, and can grant reseller roles or adjust user balances. End users can view their balance, start a deposit flow with an inline amount keypad, apply coupon codes, and navigate back to the store menu. It uses Bot properties for product/stock/coupon data and Libs.ResourcesLib for per-user balances.

Commercecommerceshopreselleradmin-panelbalanceproduct-management
ProfileTelegram
102 commands0 envUpdated 29d agoCreated Aug 7, 2026
Back to folder

commands/_onBuyQR.js

javascript · 123 lines

Raw
1/**#command2name: /onBuyQR3answer: 4keyboard: 5parse_mode: markdown6aliases: 7allow_only_group: false8need_reply: false9is_web: 010#command**/11 12try {13  if (!content) { 14    Api.sendMessage({ 15      chat_id: chat.chatid, 16      text: "❌ Error: No response from payment server. Please try again later.", 17      parse_mode: "HTML" 18    }); 19    return; 20  }21 22  var res;23  try {24    res = (typeof content === "object") ? content : JSON.parse(content);25  } catch (parseErr) {26    Api.sendMessage({27      chat_id: chat.chatid,28      text: "❌ <b>QR Parse Failed</b>\n<code>" + String(content).substring(0, 500) + "</code>",29      parse_mode: "HTML"30    });31    return;32  }33 34  if (!res || res.status !== "success" || !res.data) {35    Api.sendMessage({36      chat_id: chat.chatid,37      text: "<tg-emoji emoji-id='6219547832169273793'>❌</tg-emoji><b>QR Generation Failed</b>\n<code>" + JSON.stringify(res).substring(0, 500) + "</code>",38      parse_mode: "HTML"39    });40    return;41  }42 43  var order_id = res.data.order_id || res.data.orderid;44  var qr = res.data.qr_url || res.data.qrurl;45  var expire = res.data.expires_at_ist || res.data.expiresatist || "5 Minutes";46  var userId = user.telegramid;47 48  var price = Number(User.getProperty("buy_price") || 0);49  var userBal = Number(Libs.ResourcesLib.userRes("balance").value() || 0);50  var bonusBal = Number(Bot.getProperty("balance" + userId) || 0);51  var totalUserBal = userBal + bonusBal;52 53  var needpay = Number(User.getProperty("buy_needpay") || (price > totalUserBal ? price - totalUserBal : 0));54  var prodName = User.getProperty("buy_prod_name") || "Product";55 56  try {57    var genMsgid = Bot.getProperty("gen_msg_id_" + userId);58    if (genMsgid) {59      Api.deleteMessage({ chat_id: chat.chatid, message_id: genMsgid });60      Bot.setProperty("gen_msg_id_" + userId, null, "string");61    }62  } catch (e) {}63 64  var gatewayMsg = 65    "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji><b>PAYMENT GATEWAY</b>\n\n" +66    "<tg-emoji emoji-id='6147767796097884213'>🏷️</tg-emoji><b>Product:</b> " + prodName + "\n" +67    "<tg-emoji emoji-id='6041705726206808304'>💰</tg-emoji><b>Price:</b> ₹" + price.toFixed(2) + "\n" +68    "<tg-emoji emoji-id='5348392971207194994'>💳</tg-emoji><b>Balance:</b> ₹" + totalUserBal.toFixed(2) + "\n" +69    "<tg-emoji emoji-id='619491118249881916'>📥</tg-emoji><b>Pay Now:</b> ₹" + needpay.toFixed(2) + "\n" +70    "<tg-emoji emoji-id='6266866272848321043'>⏳</tg-emoji><b>Expire Time:</b> <code>" + expire + "</code>\n\n" +71    "<tg-emoji emoji-id='5330237710655306682'>⚡</tg-emoji><b>Scan QR & pay exact amount</b>\n";72 73  var inlineButtons = [74    [75      {76        text: "I have paid",77        callback_data: "/check_buy " + order_id,78        style: "success",79        icon_custom_emoji_id: "5330237710655306682"80      },81      {82        text: "Cancel Order",83        callback_data: "/cancel_buy " + order_id,84        style: "danger",85        icon_custom_emoji_id: "6219547832169273793"86      }87    ]88  ];89 90  var sentQrMsg;91  try {92    sentQrMsg = Api.sendPhoto({93      chat_id: chat.chatid,94      photo: qr,95      caption: gatewayMsg,96      parse_mode: "HTML",97      reply_markup: JSON.stringify({ inline_keyboard: inlineButtons })98    });99  } catch (photoErr) {100    Api.sendMessage({101      chat_id: chat.chatid,102      text: "❌ <b>sendPhoto failed</b>\nQR URL: <code>" + qr + "</code>\nError: <code>" + photoErr.message + "</code>",103      parse_mode: "HTML"104    });105    return;106  }107 108  try {109    if (sentQrMsg) {110      var qrMsgId = sentQrMsg.result ? sentQrMsg.result.message_id : sentQrMsg.message_id;111      if (qrMsgId) {112        Bot.setProperty("buy_qr_msg_id_" + userId, qrMsgId, "string");113        User.setProperty("buy_pending_order_id", order_id, "string");114      }115    }116  } catch (e) {}117} catch (err) {118  Api.sendMessage({119    chat_id: chat.chatid,120    text: "⚠️ <b>System Error:</b> <code>" + (err && err.message ? err.message : String(err)) + "</code>",121    parse_mode: "HTML"122  });123}