← back to browse
goat command

qrgen

No description

0
views
0
likes
0
installs

Aliases: qrcode

raw source
const QRCode = require('qrcode');
const fs = require('fs-extra');
const path = require('path');

function extractData(args) {
    let data = args.join(" ").trim();
    if (!data) {
        data = "https://example.com"; // ডিফল্ট ডাটা যদি কিছু না দেয়
    }
    return data;
}

module.exports = {
  config: {
    name: "qrgen",
    aliases: ["qrcode"],
    version: "1.0",
    author: "MOHAMMAD AKASH",
    countDown: 5,
    role: 0,
    longDescription: "Generate a QR code from text, link, or any information.",
    category: "utility",
    guide: {
      en: "{pn} [text or link]"
    }
  },

  onStart: async function({ message, args, event }) {
    const qrData = extractData(args);

    if (!qrData) {
      return message.reply("❌ Please provide text, link, or information to generate QR code.");
    }

    message.reaction("⏳", event.messageID);
    let tempFilePath;

    try {
      const cacheDir = path.join(__dirname, 'cache');
      if (!fs.existsSync(cacheDir)) fs.mkdirSync(cacheDir, { recursive: true });
      
      tempFilePath = path.join(cacheDir, `qr_code_${Date.now()}.png`);

      // QR কোড জেনারেট করে ফাইলে সেভ করা
      await QRCode.toFile(tempFilePath, qrData, {
        color: {
          dark: '#000',  // কালো
          light: '#FFF'  // সাদা
        },
        scale: 8  // সাইজ অ্যাডজাস্ট
      });

      message.reaction("✅", event.messageID);
      await message.reply({
        body: "✅ Yᴏᴜʀ QR ᴄᴏᴅᴇ ʜᴀs ʙᴇᴇɴ ɢᴇɴᴇʀᴀᴛᴇᴅ!",
        attachment: fs.createReadStream(tempFilePath)
      });

    } catch (error) {
      message.reaction("❌", event.messageID);
      
      let errorMessage = "An error occurred during QR code generation.";
      if (error.message) {
         errorMessage = `❌ ${error.message}`;
      }

      console.error("QRGen Command Error:", error);
      message.reply(`❌ ${errorMessage}`);
    } finally {
      if (tempFilePath && fs.existsSync(tempFilePath)) {
          fs.unlinkSync(tempFilePath);
      }
    }
  }
};

View raw file