← back to browse
goat command

mia

No description

0
views
0
likes
0
installs

Aliases: mia khalifa

raw source
const axios = require("axios");
const fs = require("fs-extra");
const canvas = require("canvas");

module.exports = {
  config: {
    name: "mia",
    aliases: ["mia khalifa"],
    author: "Otineeeeyyyy",//fixed by Denish and updated 
    countDown: 5,
    role: 0,
    category: "fun",
  },

  wrapText: async (ctx, text, maxWidth) => {
    return new Promise((resolve) => {
      if (ctx.measureText(text).width < maxWidth) return resolve([text]);
      if (ctx.measureText("W").width > maxWidth) return resolve(null);

      const words = text.split(" ");
      const lines = [];
      let line = "";

      while (words.length > 0) {
        let split = false;
        while (ctx.measureText(words[0]).width >= maxWidth) {
          const temp = words[0];
          words[0] = temp.slice(0, -1);
          if (split) words[1] = `${temp.slice(-1)}${words[1]}`;
          else {
            split = true;
            words.splice(1, 0, temp.slice(-1));
          }
        }

        if (ctx.measureText(`${line}${words[0]}`).width < maxWidth) {
          line += `${words.shift()} `;
        } else {
          lines.push(line.trim());
          line = "";
        }

        if (words.length === 0) lines.push(line.trim());
      }
      resolve(lines);
    });
  },

  onStart: async function ({ api, event, args }) {
    const { loadImage, createCanvas } = require("canvas");
    let { threadID, messageID } = event;

    const text = args.join(" ");
    if (!text) return api.sendMessage("Enter text!", threadID, messageID);

    const imageURL = "https://i.ibb.co/4gDpt4Tx/img-1765026096438.jpg";
    const pathImg = __dirname + "/cache/mia.png";

    try {
      const res = await axios.get(imageURL, { responseType: "arraybuffer" });
      fs.writeFileSync(pathImg, Buffer.from(res.data));
    } catch (err) {
      return api.sendMessage("❌ Failed to download image!", threadID, messageID);
    }

    const baseImage = await loadImage(pathImg);
    const canvasImg = createCanvas(baseImage.width, baseImage.height);
    const ctx = canvasImg.getContext("2d");

    // Draw image
    ctx.drawImage(baseImage, 0, 0, canvasImg.width, canvasImg.height);

    // 🔥 FIXED TEXT SETTINGS
    ctx.font = "300 32px Arial"; // thin + smaller
    ctx.fillStyle = "#000000";
    ctx.textAlign = "start";

    // Wrap text
    const lines = await this.wrapText(ctx, text, 600);

    // 🔥 MOVE TEXT DOWN (was 120, changed to 160)
    const startY = 160;

    ctx.fillText(lines.join("\n"), 50, startY);

    // Save final
    fs.writeFileSync(pathImg, canvasImg.toBuffer());

    return api.sendMessage(
      { attachment: fs.createReadStream(pathImg) },
      threadID,
      () => fs.unlinkSync(pathImg),
      messageID
    );
  },
};

View raw file