← back to browse
goat command

chipay

Fun command with image and stylish caption

0
views
0
likes
0
installs

Aliases: corner, muri

raw source
const axios = require("axios");
const fs = require("fs-extra");
const path = require("path");
const { createCanvas, loadImage } = require("canvas");

module.exports = {
  config: {
    name: "chipay",
    aliases: ["corner", "muri"],
    version: "2.4.9",
    author: "Milon",
    countDown: 5,
    role: 0,
    shortDescription: "Fun command with image and stylish caption",
    category: "fun",
    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;
    if (Object.keys(mentions).length > 0) {
      targetID = Object.keys(mentions)[0];
    } else if (messageReply) {
      targetID = messageReply.senderID;
    } else {
      // User not mentioned warning (Bangla)
      return api.sendMessage("🤦‍♂️ | আরে ভাই, কাকে চিপায় নিবেন তারে তো মেনশন দেন নাই!", threadID, messageID);
    }

/* --- [ 🔐 INTERNAL_SECURE_METADATA ] ---
 * 🤖 BOT NAME: MILON BOT
 * 👤 OWNER: MILON HASAN
 * 🔗 FACEBOOK: https://www.facebook.com/share/17uGq8qVZ9/
 * 📞 WHATSAPP: +880 1912603270
 * 📍 LOCATION: NARAYANGANJ, BD
 * --------------------------------------- */

    const imgPath = path.join(cacheDir, `chipay_${Date.now()}.png`);

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

      // Preparation Message (Bangla)
      api.sendMessage("⏳ | একটু দাঁড়ান, চিপায় ঝালমুড়ি খাওয়ার ব্যাবস্থা করতেছি... 😋", threadID, messageID);

      const backgroundUrl = "https://i.imgur.com/PlmZXfJ.jpeg";
      const accessToken = "6628568379|c1e620fa708a1d5696fb991c1bde5662"; 
      const avtMentionUrl = `https://graph.facebook.com/${targetID}/picture?width=720&height=720&access_token=${accessToken}`;
      const avtSenderUrl = `https://graph.facebook.com/${senderID}/picture?width=720&height=720&access_token=${accessToken}`;

      const [bgImg, avtLeft, avtRight] = await Promise.all([
        loadImage(backgroundUrl),
        loadImage(avtMentionUrl),
        loadImage(avtSenderUrl)
      ]);

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

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

      // --- Draw Box and Name inside Image ---
      ctx.font = "bold 18px Arial"; 
      const textWidth = ctx.measureText(targetName).width;
      const textX = canvas.width - 100;
      const textY = canvas.height - 103;

      const padding = 10;
      const boxWidth = textWidth + padding * 2;
      const boxHeight = 28;
      const boxX = textX - boxWidth; 
      const boxY = textY - 20;

      // Draw Background Box
      ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; 
      ctx.fillRect(boxX, boxY, boxWidth, boxHeight);
      
      // Draw Box Border
      ctx.strokeStyle = "#FFFFFF";
      ctx.lineWidth = 1;
      ctx.strokeRect(boxX, boxY, boxWidth, boxHeight);

      // Draw Mention Name
      ctx.fillStyle = "#FFFFFF"; 
      ctx.textAlign = "right"; 
      const drawTextX = textX - padding;
      
      ctx.fillText(targetName, drawTextX, textY);

      const avatarSizeLeft = 110; 
      const avatarSizeUser = 95; 

      // --- Left Side (Target) ---
      const xLeft = 85, yLeft = 85; 
      ctx.save();
      ctx.beginPath();
      ctx.arc(xLeft + avatarSizeLeft / 2, yLeft + avatarSizeLeft / 2, avatarSizeLeft / 2, 0, Math.PI * 2, true);
      ctx.closePath();
      ctx.clip();
      ctx.drawImage(avtLeft, xLeft, yLeft, avatarSizeLeft, avatarSizeLeft);
      ctx.restore();

      // --- Right Side (Sender) ---
      const xRight = 350, yRight = 100; 
      ctx.save();
      ctx.beginPath();
      ctx.arc(xRight + avatarSizeUser / 2, yRight + avatarSizeUser / 2, avatarSizeUser / 2, 0, Math.PI * 2, true);
      ctx.closePath();
      ctx.clip();
      ctx.drawImage(avtRight, xRight, yRight, avatarSizeUser, avatarSizeUser);
      ctx.restore();

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

      // Final Output Caption (Bangla Style)
      const caption = `😾⎯͢⎯⃝⋆⃝চিঁপাঁয়ঁ আঁয়ঁ ঝাঁলঁমুঁড়িঁ বাঁনাঁয়ঁছিঁ🙈 ⋆⃝⋆⃝😹😒⋆🐰🍒\n\n${targetName} এ্ঁদি্ঁকে্ঁ আ্ঁসো্ঁ 💋💋`;

      return api.sendMessage({
        body: caption,
        mentions: [{ tag: targetName, id: targetID }],
        attachment: fs.createReadStream(imgPath)
      }, threadID, () => {
        if (fs.existsSync(imgPath)) fs.unlinkSync(imgPath);
      }, messageID);

    } catch (error) {
      console.log("CHIPAY ERROR:", error);
      return api.sendMessage("❌ | Error! Failed to process image. Please try again.", threadID, messageID);
    }
  }
};

View raw file