← back to browse
goat command

rajakar

Create a rajakar image by mentioning or replying to a user.

0
views
0
likes
0
installs
raw source
const fs = require("fs-extra");
const path = require("path");
const { createCanvas, loadImage } = require("canvas");

module.exports = {
  config: {
    name: "rajakar",
    version: "12.0.5",
    author: "Milon",
    countDown: 1,
    role: 0,
    category: "fun",
    description: "Create a rajakar image by mentioning or replying to a user.",
    guide: {
      en: "{pn} @mention or reply"
    }
  },

  onStart: async function ({ api, event }) {
    const { threadID, messageID, senderID, mentions, messageReply } = event;

    const cacheDir = path.join(__dirname, "cache");
    if (!fs.existsSync(cacheDir)) fs.ensureDirSync(cacheDir);

    let targetID = senderID;
    if (Object.keys(mentions).length > 0) {
      targetID = Object.keys(mentions)[0];
    } else if (messageReply) {
      targetID = messageReply.senderID;
    }

    const imgPath = path.join(cacheDir, `rk_${targetID}.png`);

    try {
      const userInfo = await api.getUserInfo(targetID);
      const userName = userInfo[targetID]?.name || "User";

      const backgroundUrl = "https://files.catbox.moe/vu57u2.jpg";
      const avatarUrl = `https://graph.facebook.com/${targetID}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;

      const [bgImg, avatarImg] = await Promise.all([
        loadImage(backgroundUrl),
        loadImage(avatarUrl)
      ]);

      const canvas = createCanvas(bgImg.width, bgImg.height);
      const ctx = canvas.getContext("2d");

      ctx.drawImage(bgImg, 0, 0, canvas.width, canvas.height);

      const userImageSize = 120; 
      const x = canvas.width - userImageSize - 75; 
      const y = (canvas.height / 2) - (userImageSize / 2) - 15; 

      ctx.save();
      ctx.beginPath();
      ctx.arc(x + userImageSize / 2, y + userImageSize / 2, userImageSize / 2, 0, Math.PI * 2, true);
      ctx.closePath();
      ctx.clip();
      ctx.drawImage(avatarImg, x, y, userImageSize, userImageSize);
      ctx.restore();

      const buffer = canvas.toBuffer("image/png");
      fs.writeFileSync(imgPath, buffer);

      // All Bengali text changed to English
      return api.sendMessage({
        body: `‎এই যে দেখেন আমাদের নতুন রাজাকার: ${userName}`,
        mentions: [{ tag: userName, id: targetID }],
        attachment: fs.createReadStream(imgPath)
      }, threadID, () => {
        if (fs.existsSync(imgPath)) fs.unlinkSync(imgPath);
      }, messageID);

    } catch (error) {
      console.log("RAJAKAR ERROR:", error);
      return api.sendMessage("Something went wrong, please try again later.", threadID, messageID);
    }
  }
};

View raw file