goat
command
bonk
Bonk someone
0
views
0
likes
0
installs
Aliases: b
raw source
const axios = require("axios");
const { createCanvas, loadImage } = require("canvas");
const fs = require("fs");
const path = require("path");
module.exports = {
config: {
name: "bonk",
aliases: ["b"],
author: "Meheraz | rewrite by Muzan",
shortDescription: "Bonk someone",
longDescription: "Make a BONK meme using two avatars",
category: "fun",
},
circleCrop: async function (buffer, size) {
const img = await loadImage(buffer);
const canvas = createCanvas(size, size);
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(size / 2, size / 2, size / 2, 0, Math.PI * 2);
ctx.closePath();
ctx.clip();
ctx.drawImage(img, 0, 0, size, size);
return canvas;
},
makeImage: async function (one, two) {
const bgURL = "https://i.postimg.cc/KYJ0VnK0/image0.png";
const bg = await loadImage(bgURL);
const width = 640;
const height = 480;
const canvas = createCanvas(width, height);
const ctx = canvas.getContext("2d");
ctx.drawImage(bg, 0, 0, width, height);
const fetchPfp = async (id) => {
const url = `https://graph.facebook.com/${id}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;
return (await axios.get(url, { responseType: "arraybuffer" })).data;
};
const avtOne = await fetchPfp(one);
const avtTwo = await fetchPfp(two);
const circle1 = await this.circleCrop(avtOne, 110); // PFP 1 -> size 110
const circle2 = await this.circleCrop(avtTwo, 90); // PFP 2 -> size 90
// Swap positions
ctx.drawImage(circle1, 60, 150); // Sender goes to hitting position
ctx.drawImage(circle2, 500, 220); // Target goes to bonked position
const outPath = path.join(__dirname, `bonk_${one}_${two}.png`);
fs.writeFileSync(outPath, canvas.toBuffer("image/png"));
return outPath;
},
onStart: async function ({ api, event, args }) {
try {
const { threadID, messageID, senderID, mentions, messageReply } = event;
let targetID;
if (messageReply?.senderID) targetID = messageReply.senderID;
else if (Object.keys(mentions).length) targetID = Object.keys(mentions)[0];
else if (args[0] && /^\d+$/.test(args[0])) targetID = args[0];
else return api.sendMessage("⚠ Reply / Mention / UID use koro.", threadID, messageID);
const one = senderID;
const two = targetID;
// --- পরিবর্তন এখান থেকে শুরু ---
// টার্গেট আইডির নাম বের করা হচ্ছে
let targetName = "User";
try {
const userInfo = await api.getUserInfo(targetID);
targetName = userInfo[targetID].name;
} catch (e) {
// যদি নাম না পাওয়া যায়, তাহলে ম্যানশন চেক করবে
if (Object.keys(mentions).length > 0) {
targetName = mentions[targetID].replace("@", "");
}
}
// --- পরিবর্তন শেষ ---
const file = await this.makeImage(one, two);
api.sendMessage(
{
body: `${targetName} bonk nigga 🪓`, // এখানে নাম এবং টেক্সট সেট করা হয়েছে
attachment: fs.createReadStream(file),
},
threadID,
() => fs.unlinkSync(file),
messageID
);
} catch (err) {
api.sendMessage("❌ Error: " + err.message, event.threadID, event.messageID);
}
},
};