// code from goatstore // api: https://store.agi.bd const fs = require("fs-extra"); const axios = require("axios"); const canvas = require("canvas"); const path = require("path"); // ===== সেটিংস ===== const COOLDOWN_MS = 60 * 1000; // ১ জন ইউজার ১ মিনিটে ১ বার const BOSS_NOTICE = "MEHEDI বসকে BIJO_BOY করা জাবে না রে পাগলা"; const TEMPLATE_URL = "https://i.imgur.com/Yh10DDM.jpeg"; // র‍্যান্ডম ক্যাপশন লিস্ট const CAPTIONS = [ "জীবনটা পুরাই তেজপাতা 🌿 ভালোবাসা করতে গিয়ে হলাম বাসন মাজা!🤣 প্রেমিক দিলো ধোঁকা🥲 এখন থালা-বাসনই আমার একমাত্র সখা!", "স্বপ্ন ছিল হবো বড়লোক 💸 এখন হাতে সাবান আর বাসনের ঝাঁক! বিয়ের আগে শিখে নে ভাই নইলে বউ বলবে, আগে বাসন মাজাই!", "প্রেম করতে গিয়ে জীবন শেষ 😂 হাতে সাবান, সামনে নোংরা প্লেট! প্রেমিক এখন অন্যের রানী আমি মাজি হাঁড়ি-পাতিলখানি!", "মা বলেছিল, মন দিয়ে পড় 📚 আমি বলেছিলাম, হবো বড় অফিসার!💼 আজকে দেখি কপালের কী দশা সারাদিন শুধু বাসন মাজা!", "প্রেমের নেশায় করলাম ভুল!😵‍ এখন বাসন মাজাই আমার স্কুল! 🏫 হাতে সাবান, চোখে পানি এই জীবন নিয়ে কী করব জানি! ", "বন্ধুরা সবাই ঘুরতে যায় আমার কপালে বাসন মাজা পায়😭 ওরা খায় বিরিয়ানি আর মুরগির ঝোল🤤 আমি মাজি হাঁড়ি, এটাই আমার রোল!", "একসময় ছিলাম এলাকার কিং 👑 এখন বাসন মাজাই ফুল টাইম জবিং! মুকুট গেল, গেল সম্মান 😭হাতে শুধু সাবান আর থালা-বাটির দোকান!", "কৌ বলেছে, তুমি নাকি হিরো! বাসন মাজতে গিয়ে বুঝলাম জিরো! 🤣 প্রেমের সময় ছিলাম রাজা এখন সারাদিন বাসন মাজা!", "সাবান বলে, ভাই আর কত ঘষবি?😂 থালা বলে, আমাকে কবে ছাড়বি? আমি বলি, কপালটাই খারাপ!🤦‍♂️ বাসন মাজতে মাজতে জীবন বরবাদ!", "দুনিয়াতে কত রকমের শাস্তি! 😂 আমার কপালে বাসন মাজা বাধ্যতামূলক ডিউটি! হাঁড়ি-পাতিল দেখলেই লাগে ভয় এই জন্মে কি আর মুক্তি হয়?" ]; // গোল সাদা জায়গা const REF = { w: 1024, h: 1536 }; const AVATAR = { x: 405, y: 358, size: 250 }; // ================== const lastUsed = new Map(); // এডমিন লিস্ট function getAdminIDs() { const list = (global.GoatBot?.config?.adminBot) || (global.config?.ADMINBOT) || []; return list.map(String); } module.exports = { config: { name: "bijiboy", version: "1.1.0", author: "MEHEDI", countDown: 0, role: 0, shortDescription: "busy boy template memes", longDescription: "Create funny busy boy memes with profile picture", category: "image", guide: "{pn} [@mention / reply]" }, onStart: async function ({ event, api, message, users }) { const senderID = String(event.senderID); const admins = getAdminIDs(); const senderIsAdmin = admins.includes(senderID); // টার্গেট: মেনশন > রিপ্লাই > নিজে const targetUserId = String( Object.keys(event.mentions || {})[0] || (event.messageReply && event.messageReply.senderID) || event.senderID ); // ১) বট এডমিনকে করা যাবে না if (admins.includes(targetUserId)) { return message.reply(BOSS_NOTICE); } // ২) কুলডাউন (এডমিন আনলিমিটেড) if (!senderIsAdmin) { const now = Date.now(); const last = lastUsed.get(senderID) || 0; const wait = COOLDOWN_MS - (now - last); if (wait > 0) { return message.reply( `⏳ ${Math.ceil(wait / 1000)} সেকেন্ড পরে আবার চেষ্টা কর।` ); } lastUsed.set(senderID, now); } const cacheDir = path.join(__dirname, "cache"); const outputPath = path.join(cacheDir, `bijiboy_${Date.now()}.jpg`); try { await fs.ensureDir(cacheDir); // টেমপ্লেট ছবি const templateRes = await axios.get(TEMPLATE_URL, { responseType: "arraybuffer", headers: { "User-Agent": "Mozilla/5.0" }, timeout: 20000 }); const templateImage = await canvas.loadImage(Buffer.from(templateRes.data)); // প্রোফাইল ছবি let picData; try { const picRes = await axios.get( `https://graph.facebook.com/${targetUserId}/picture?width=512&height=512&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`, { responseType: "arraybuffer", headers: { "User-Agent": "Mozilla/5.0" }, timeout: 15000 } ); picData = picRes.data; } catch (e) { // ব্যাকআপ const info = await new Promise((resolve, reject) => { api.getUserInfo(targetUserId, (err, res) => (err ? reject(err) : resolve(res))); }); const thumb = info[targetUserId]?.thumbSrc; if (!thumb) throw new Error("Profile picture not found"); const r2 = await axios.get(thumb, { responseType: "arraybuffer", timeout: 15000 }); picData = r2.data; } const avatar = await canvas.loadImage(Buffer.from(picData)); const cv = canvas.createCanvas(templateImage.width, templateImage.height); const ctx = cv.getContext("2d"); ctx.drawImage(templateImage, 0, 0); // স্কেল const kx = templateImage.width / REF.w; const ky = templateImage.height / REF.h; const ax = AVATAR.x * kx; const ay = AVATAR.y * ky; const as = AVATAR.size * kx; ctx.save(); ctx.beginPath(); ctx.arc(ax + as / 2, ay + as / 2, as / 2, 0, Math.PI * 2); ctx.closePath(); ctx.clip(); ctx.drawImage(avatar, ax, ay, as, as); ctx.restore(); await fs.writeFile(outputPath, cv.toBuffer("image/jpeg")); // নাম বের করা let name = "বন্ধু"; try { name = await users.getName(targetUserId); } catch (e) { try { const info = await new Promise((resolve, reject) => { api.getUserInfo(targetUserId, (err, res) => (err ? reject(err) : resolve(res))); }); name = info[targetUserId]?.name || name; } catch (e2) {} } const caption = CAPTIONS[Math.floor(Math.random() * CAPTIONS.length)]; const fullBody = name + "\n\n" + caption; await message.reply({ body: fullBody, mentions: [{ tag: name, id: targetUserId }], attachment: fs.createReadStream(outputPath) }); // ফাইল ডিলিট setTimeout(() => { fs.unlink(outputPath).catch(() => {}); }, 15000); } catch (error) { lastUsed.delete(senderID); console.error("[BIJIBOY ERROR]", error); return message.reply("Error: " + error.message); } } };