indrajitghosh20006/Testseller_01botPublic · Bot Template

ProfileTelegram

AIThis bot provides an admin‑controlled system for managing user balances, products, and reseller roles. It includes commands to add balances (via manual input, Binance Pay, or UPI), approve and credit payments, and set up product listings with categories and pricing. Admins can also add resellers, view reseller info, and manage stock entries. The bot uses built‑in TeleBotHost APIs such as Bot, Api, HTTP, and Libs for database operations and message handling.

Commerceadminbalanceproductresellerpaymentsbinance
138 commands0 envUpdated 17h agoCreated Sep 27, 2026
Back to folder

commands/_onBuyQR.js

javascript · 122 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 totalUserBal = userBal;51 52  var needpay = Number(User.getProperty("buy_needpay") || (price > totalUserBal ? price - totalUserBal : 0));53  var prodName = User.getProperty("buy_prod_name") || "Product";54 55  try {56    var genMsgid = Bot.getProperty("gen_msg_id_" + userId);57    if (genMsgid) {58      Api.deleteMessage({ chat_id: chat.chatid, message_id: genMsgid });59      Bot.setProperty("gen_msg_id_" + userId, null, "string");60    }61  } catch (e) {}62 63  var gatewayMsg = 64    "<tg-emoji emoji-id='6267225207560214192'>⚠️</tg-emoji><b>PAYMENT GATEWAY</b>\n\n" +65    "<tg-emoji emoji-id='6147767796097884213'>🏷️</tg-emoji><b>Product:</b> " + prodName + "\n" +66    "<tg-emoji emoji-id='6041705726206808304'>💰</tg-emoji><b>Price:</b> ₹" + price.toFixed(2) + "\n" +67    "<tg-emoji emoji-id='5348392971207194994'>💳</tg-emoji><b>Balance:</b> ₹" + totalUserBal.toFixed(2) + "\n" +68    "<tg-emoji emoji-id='619491118249881916'>📥</tg-emoji><b>Pay Now:</b> ₹" + needpay.toFixed(2) + "\n" +69    "<tg-emoji emoji-id='6266866272848321043'>⏳</tg-emoji><b>Expire Time:</b> <code>" + expire + "</code>\n\n" +70    "<tg-emoji emoji-id='5330237710655306682'>⚡</tg-emoji><b>Scan QR & pay exact amount</b>\n";71 72  var inlineButtons = [73    [74      {75        text: "I have paid",76        callback_data: "/check_buy " + order_id,77        style: "success",78        icon_custom_emoji_id: "5330237710655306682"79      },80      {81        text: "Cancel Order",82        callback_data: "/cancel_buy " + order_id,83        style: "danger",84        icon_custom_emoji_id: "6219547832169273793"85      }86    ]87  ];88 89  var sentQrMsg;90  try {91    sentQrMsg = Api.sendPhoto({92      chat_id: chat.chatid,93      photo: qr,94      caption: gatewayMsg,95      parse_mode: "HTML",96      reply_markup: JSON.stringify({ inline_keyboard: inlineButtons })97    });98  } catch (photoErr) {99    Api.sendMessage({100      chat_id: chat.chatid,101      text: "❌ <b>sendPhoto failed</b>\nQR URL: <code>" + qr + "</code>\nError: <code>" + photoErr.message + "</code>",102      parse_mode: "HTML"103    });104    return;105  }106 107  try {108    if (sentQrMsg) {109      var qrMsgId = sentQrMsg.result ? sentQrMsg.result.message_id : sentQrMsg.message_id;110      if (qrMsgId) {111        Bot.setProperty("buy_qr_msg_id_" + userId, qrMsgId, "string");112        User.setProperty("buy_pending_order_id", order_id, "string");113      }114    }115  } catch (e) {}116} catch (err) {117  Api.sendMessage({118    chat_id: chat.chatid,119    text: "⚠️ <b>System Error:</b> <code>" + (err && err.message ? err.message : String(err)) + "</code>",120    parse_mode: "HTML"121  });122}