← back to browse
goat command

sala

Tui amar vaieee bonding

0
views
0
likes
0
installs
raw source
const axios = require('axios');
const fs = require('fs-extra');
const path = require('path');
const jimp = require('jimp');

module.exports = {
  config: {
    name: "sala",
    version: "1.0.0",
    author: "Toshiro Editz ",
    countDown: 5,
    role: 0,
    shortDescription: "Tui amar vaieee bonding",
    longDescription: "Bonding edit: sender & tagged user photo",
    category: "fun",
    guide: "{pn} @tag"
  },

  // ⬇️ Background file download for GoatBot V2
  onLoad: async () => {
    const dir = path.join(__dirname, "cache/canvas");
    const bgPath = path.join(dir, "sala_bg.jpg");

    if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });

    if (!fs.existsSync(bgPath)) {
      const bgURL = "https://i.postimg.cc/jdp17LNv/IMG-6498.jpg";
      const getBG = (await axios.get(bgURL, { responseType: "arraybuffer" })).data;
      fs.writeFileSync(bgPath, Buffer.from(getBG));
    }
  },

  // MAIN COMMAND
  onStart: async function ({ event, api }) {
    const threadID = event.threadID;
    const messageID = event.messageID;

    const mention = Object.keys(event.mentions);
    if (!mention[0])
      return api.sendMessage("একজনকে ট্যাগ কর সালা বানানোর জন্য 😈", threadID, messageID);

    const one = event.senderID;
    const two = mention[0];

    try {
      const imgPath = await makeImage({ one, two });

      api.sendMessage(
        {
          body: "তুই আমার বন্ধু না, তুই আমার ভাইই 😏🔥",
          attachment: fs.createReadStream(imgPath)
        },
        threadID,
        () => fs.unlinkSync(imgPath),
        messageID
      );
    } catch (e) {
      api.sendMessage("❌ কিছু একটা সমস্যা হয়েছে!", threadID, messageID);
      console.log(e);
    }
  }
};

// ========== IMAGE MAKER FUNCTION ==========
async function makeImage({ one, two }) {
  const canvasDir = path.join(__dirname, "cache/canvas");

  const bg = await jimp.read(path.join(canvasDir, "sala_bg.jpg"));
  const output = path.join(canvasDir, `sala_${one}_${two}.png`);

  const av1 = path.join(canvasDir, `avt_${one}.png`);
  const av2 = path.join(canvasDir, `avt_${two}.png`);

  // Download avatars
  const url = id => `https://graph.facebook.com/${id}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;

  fs.writeFileSync(av1, Buffer.from((await axios.get(url(one), { responseType: "arraybuffer" })).data));
  fs.writeFileSync(av2, Buffer.from((await axios.get(url(two), { responseType: "arraybuffer" })).data));

  // Circle crop
  const circleOne = await jimp.read(await makeCircle(av1));
  const circleTwo = await jimp.read(await makeCircle(av2));

  // Positioning (GoatBot V2 style)
  bg.resize(500, 300)
    .composite(circleOne.resize(70, 70), 120, 110)
    .composite(circleTwo.resize(70, 70), 310, 110);

  fs.writeFileSync(output, await bg.getBufferAsync("image/png"));

  fs.unlinkSync(av1);
  fs.unlinkSync(av2);

  return output;
}

// Circle function
async function makeCircle(image) {
  const img = await jimp.read(image);
  img.circle();
  return await img.getBufferAsync("image/png");
  }

View raw file