← back to browse
goat command

kiss

A fun kiss picture!

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

module.exports = {
  config: {
    name: "kiss",
    version: "1.5",
    author: "Amit Max ⚡",
    countDown: 5,
    role: 0,
    shortDescription: "A fun kiss picture!",
    longDescription: "A fun command to create a kiss picture with the given positions.",
    category: "fun",
    guide: "{pn} @mention or reply",
  },

  onStart: async function ({ event, api, usersData }) {
    let mention = Object.keys(event.mentions)[0];
    let targetID = mention || event.messageReply?.senderID;

    if (!targetID)
      return api.sendMessage("কাকে চুমু দিবে? ট্যাগ কর বা কারো রিপ্লাই দাও!", event.threadID, event.messageID);

    const senderID = event.senderID;

    const getAvatar = async (uid) => {
      try {
        const url = `https://graph.facebook.com/${uid}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;
        const avatarPath = path.join(__dirname, `${uid}_avatar.png`);
        const res = await axios.get(url, { responseType: "arraybuffer" });
        fs.writeFileSync(avatarPath, res.data);
        return avatarPath;
      } catch (err) {
        console.error(`Error fetching avatar for user ${uid}: ${err.message}`);
        return "";
      }
    };

    const bg = await loadImage("https://i.imgur.com/VniSzhD.png"); 
    const canvas = createCanvas(bg.width, bg.height);
    const ctx = canvas.getContext("2d");
    ctx.drawImage(bg, 0, 0);

    const senderAvatarPath = await getAvatar(senderID);
    const targetAvatarPath = await getAvatar(targetID);

    const senderAvatar = await loadImage(senderAvatarPath);
    const targetAvatar = await loadImage(targetAvatarPath);

    
    ctx.save();
    ctx.beginPath();
    ctx.arc(340, 120, 60, 0, Math.PI * 2);
    ctx.closePath();
    ctx.clip();
    ctx.drawImage(targetAvatar, 280, 60, 120, 120);
    ctx.restore();

    
    ctx.save();
    ctx.beginPath();
    ctx.arc(500, 70, 60, 0, Math.PI * 2);
    ctx.closePath();
    ctx.clip();
    ctx.drawImage(senderAvatar, 440, 10, 120, 120);
    ctx.restore();

    const output = path.join(__dirname, "kiss_output.png");
    fs.writeFileSync(output, canvas.toBuffer("image/png"));

    const senderName = await usersData.getName(senderID);
    const targetName = event.mentions[mention] || (event.messageReply?.senderName || "Friend");

    api.sendMessage({
      body: `❤️ Kiss time! \n${senderName} gave a kiss to ${targetName}! 💋`,
      attachment: fs.createReadStream(output),
      mentions: [{ tag: targetName, id: targetID }],
    }, event.threadID, () => {
      fs.unlinkSync(output);
      fs.unlinkSync(senderAvatarPath);
      fs.unlinkSync(targetAvatarPath);
    }, event.messageID);
  }
};

View raw file