goat
command
bro2
๐ Generate a Minecraft-themed Bleach bro image
0
views
0
likes
0
installs
Aliases: minebro, bleachbro
raw source
const fs = require("fs-extra");
const path = require("path");
const { createCanvas, loadImage } = require("canvas");
module.exports = {
config: {
name: "bro2",
aliases: ["minebro", "bleachbro"],
version: "1.0",
author: "TOSHIRO EDIT",
countDown: 5,
role: 0,
description: "๐ Generate a Minecraft-themed Bleach bro image",
category: "fun",
guide: {
en: "{pn} @tag or reply โ Generate the image"
}
},
langs: {
en: {
noTag: "Please tag a user or reply to a message ๐",
fail: "โ | Failed to generate the image."
}
},
onStart: async function ({ event, message, usersData, getLang }) {
const senderID = event.senderID;
let targetID = Object.keys(event.mentions || {})[0];
if (!targetID && event.messageReply?.senderID) {
targetID = event.messageReply.senderID;
}
if (!targetID) return message.reply(getLang("noTag"));
try {
const [senderName, targetName] = await Promise.all([
usersData.getName(senderID).catch(() => "Bro1"),
usersData.getName(targetID).catch(() => "Bro2")
]);
const [senderAvatarUrl, targetAvatarUrl] = await Promise.all([
usersData.getAvatarUrl(senderID),
usersData.getAvatarUrl(targetID)
]);
// Your requested raw GitHub link
const bgURL = "https://raw.githubusercontent.com/Toshiro6t9/Bzsb/refs/heads/main/6f1cb6b55548f87bce35366f6e1363b1.jpg";
const [senderAvatar, targetAvatar, baseImage] = await Promise.all([
loadImage(senderAvatarUrl),
loadImage(targetAvatarUrl),
loadImage(bgURL)
]);
const canvas = createCanvas(baseImage.width, baseImage.height);
const ctx = canvas.getContext("2d");
// Draw Background
ctx.drawImage(baseImage, 0, 0, canvas.width, canvas.height);
// Function to draw circular avatars
const drawCircleAvatar = (avatar, x, y, size) => {
ctx.save();
ctx.beginPath();
ctx.arc(x + size / 2, y + size / 2, size / 2, 0, Math.PI * 2);
ctx.closePath();
ctx.clip();
ctx.drawImage(avatar, x, y, size, size);
ctx.restore();
};
/**
* COORDINATE GUIDE:
* 1st Avatar (Left character - Bam): Positioned near Ichigo's head
* 2nd Avatar (Right character - Dan): Positioned near Urahara's head
*/
drawCircleAvatar(senderAvatar, 488, 299, 110); // Ichigo (Left)
drawCircleAvatar(targetAvatar, 170, 285, 110); // Urahara (Right)
// Temp file handling
const tmpDir = path.join(__dirname, "tmp");
await fs.ensureDir(tmpDir);
const imgPath = path.join(tmpDir, `bro2_${Date.now()}.png`);
await fs.writeFile(imgPath, canvas.toBuffer("image/png"));
await message.reply({
body: `๐ ${senderName} and ${targetName} are mining through life together!`,
attachment: fs.createReadStream(imgPath)
});
// Auto delete
setTimeout(() => {
if (fs.existsSync(imgPath)) fs.unlinkSync(imgPath);
}, 10000);
} catch (err) {
console.error("Bro2 command error:", err);
return message.reply(getLang("fail"));
}
}
};