← back to browse
goat command

crush

Crush edit with template

0
views
0
likes
0
installs

Aliases: love, sweetheart

raw source
// crush.js
const fs = require("fs-extra");
const Canvas = require("canvas");

module.exports = {
  config: {
    name: "crush",
    aliases: ["love", "sweetheart"],
    version: "1.0.0",
    author: "NIB",
    countDown: 5,
    role: 0,
    shortDescription: "Crush edit with template",
    longDescription: "Put user profile pictures exactly on placeholders in background",
    category: "funny",
    guide: "{pn} @tag"
  },

  onStart: async function ({ event, api }) {
    try {
      const id1 = event.senderID;
      const mentions = Object.keys(event.mentions || {});
      const id2 = mentions[0];
      if (!id2) return api.sendMessage("❌ | Please mention someone!", event.threadID, event.messageID);

      // Load avatars
      const avatar1 = await Canvas.loadImage(`https://graph.facebook.com/${id1}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`);
      const avatar2 = await Canvas.loadImage(`https://graph.facebook.com/${id2}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`);

      // Load background
      const background = await Canvas.loadImage("https://i.imgur.com/PlVBaM1.jpg");

      // Create canvas
      const canvas = Canvas.createCanvas(background.width, background.height);
      const ctx = canvas.getContext("2d");

      // Draw background
      ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

      // Avatar coordinates & sizes (same as NIB/Jimp)
      const left = { x: 93, y: 111, size: 191 };
      const right = { x: 434, y: 107, size: 190 };

      // Function to draw circular avatar
      function drawCircle(img, x, y, size) {
        ctx.save();
        ctx.beginPath();
        ctx.arc(x + size / 2, y + size / 2, size / 2, 0, Math.PI * 2, true);
        ctx.closePath();
        ctx.clip();
        ctx.drawImage(img, x, y, size, size);
        ctx.restore();
      }

      drawCircle(avatar1, left.x, left.y, left.size);
      drawCircle(avatar2, right.x, right.y, right.size);

      // Save & send
      const path = __dirname + "/cache/crush.png";
      const out = fs.createWriteStream(path);
      const stream = canvas.createPNGStream();
      stream.pipe(out);
      out.on("finish", () => {
        api.sendMessage({
          body: "💖 𝐂𝐫𝐮𝐬𝐡 𝐄𝐝𝐢𝐭 💖\n\nSuccessfully created your crush edit!",
          attachment: fs.createReadStream(path)
        }, event.threadID, () => fs.unlinkSync(path), event.messageID);
      });
    } catch (err) {
      console.error(err);
      api.sendMessage("❌ | Something went wrong!", event.threadID, event.messageID);
    }
  }
};

View raw file