goat
command
sanda
No description
0
views
0
likes
0
installs
raw source
const fs = require("fs-extra");
const path = require("path");
const axios = require("axios");
const { createCanvas, loadImage } = require("canvas");
module.exports = {
config: {
name: "sanda",
version: "2.2.0",
author: "ariyan",
countDown: 5,
role: 0,
category: "fun",
guide: { en: "{pn} @mention or reply" }
},
onStart: async function ({ event, message, api }) {
let targetID;
// 1️⃣ Check Mentions
if (event.mentions && Object.keys(event.mentions).length > 0) {
targetID = Object.keys(event.mentions)[0];
}
// 2️⃣ Check Reply
else if (event.messageReply) {
targetID = event.messageReply.senderID;
}
// 3️⃣ Default to sender (Self) - Removing the "self-ban" for better usability
else {
targetID = event.senderID;
}
const cacheDir = path.join(__dirname, "cache");
const outPath = path.join(cacheDir, `sanda_${targetID}.png`);
await fs.ensureDir(cacheDir);
try {
const canvas = createCanvas(600, 800);
const ctx = canvas.getContext("2d");
// 🔹 Background Template
const bg = await loadImage("https://i.imgur.com/ZQXW9jO.png");
ctx.drawImage(bg, 0, 0, 600, 800);
// 🔹 Fetch avatar with Access Token (Fixed for blank profile)
let avatarBuffer;
const avatarURL = `https://graph.facebook.com/${targetID}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;
try {
const res = await axios.get(avatarURL, { responseType: "arraybuffer" });
avatarBuffer = res.data;
} catch (e) {
// Fallback image if something fails
const res = await axios.get("https://i.imgur.com/8Km9tLL.png", { responseType: "arraybuffer" });
avatarBuffer = res.data;
}
const avatarImg = await loadImage(avatarBuffer);
// 🔹 Circular avatar positioning
const size = 150;
const x = (600 - size) / 2;
const y = 70;
ctx.save();
ctx.beginPath();
ctx.arc(x + size / 2, y + size / 2, size / 2, 0, Math.PI * 2);
ctx.closePath();
ctx.clip();
ctx.drawImage(avatarImg, x, y, size, size);
ctx.restore();
// 🔹 Save image
fs.writeFileSync(outPath, canvas.toBuffer("image/png"));
const info = await api.getUserInfo(targetID);
const name = info[targetID]?.name || "User";
await message.reply(
{
body: `🤣 ${name} is now a real Lizard (Sanda)! 🦥`,
attachment: fs.createReadStream(outPath)
},
() => {
if (fs.existsSync(outPath)) fs.unlinkSync(outPath);
}
);
} catch (err) {
console.error("SANDA ERROR:", err);
message.reply("❌ Error occurred, please try again later.");
}
}
};