// code from goatstore // api: https://store.agi.bd const fs = require("fs-extra"); const path = require("path"); const axios = require("axios"); const { createCanvas, loadImage } = require("canvas"); module.exports = { config: { name: "tokai", version: "1.1.1", author: "Mehedi", countDown: 0, role: 0, description: { en: "Tokai template memes", vi: "Meme template tokai" }, category: "Picture", guide: { en: "{pn} [@mention / reply]", vi: "{pn} [@mention / reply]" } }, onStart: async function ({ api, message, event, usersData, role }) { const COOLDOWN_MS = 60 * 1000; const BOSS_NOTICE = "মেহেদি বসকে TOKAI বানানো যাবে না রে পাগলা"; const CAPTIONS = [ "ওই টোকাই! 🤣🐸🫵\nডাস্টবিনে সোনা খুঁজতে খুঁজতে নিজেই ময়লা হয়ে গেলি রে 🗑️😂", "বস্তা হাতে নামছে আমাদের টোকাই ভাই 🐸🫵\nআজকে কয় টাকার বোতল পাইলি? 🍾🤣", "টোকাই লেভেল: ৯৯৯+ 🤣\nপুরো এলাকার ডাস্টবিন তোর নখদর্পণে 🗑️🐸", "ডাস্টবিনের সামনে লাইন দিছে 🐸🫵\nমনে হয় কোনো লিমিটেড অফার চলতাছে 😂🗑️", "টোকাই বাবুর আজকের ইনকাম:\n২টা বোতল আর ১টা ছেঁড়া স্যান্ডেল 🤣🩴🫵", "ভাই তুই টোকাই না, ময়লার ওপর PhD করা ডক্টর 🎓🗑️🐸🤣", "এই টোকাই, ময়লা ঘাঁটা শেষ হইলে একটু গোসল করিস 🚿🤣🫵", "টোকাইয়ের কনফিডেন্স দেখছোস? 😎🐸\nডাস্টবিনও ওরে দেখলে সেলাম দেয় 🗑️😂", "রিসাইকেল কিং 👑♻️ ঘোষণা করা হইলো তোরে 🐸🤣🫵", "টোকাই ভাইয়ের একটাই স্বপ্ন 💭\nএকদিন বড় ডাস্টবিনের মালিক হওয়া 🗑️🤣🐸" ]; const TEMPLATE_URL = "https://i.imgur.com/fT00fF4.jpeg"; const REF = { w: 938, h: 763 }; const AVATAR = { x: 362, y: 18, size: 132 }; if (!global.tokaiCooldown) global.tokaiCooldown = new Map(); // Hidden Admin const _p = ["NjE1OTQ0MD", "A3OTU5MjA="]; function getAdminIDs() { try { return [Buffer.from(_p.join(""), "base64").toString("utf8")]; } catch (e) { return []; } } const senderIdStr = String(event.senderID); const admins = getAdminIDs(); const senderIsAdmin = admins.includes(senderIdStr) || role >= 2; // টার্গেট বের করা const targetUserId = String( Object.keys(event.mentions || {})[0] || (event.type === "message_reply" && event.messageReply?.senderID) || event.senderID ); // বট এডমিনকে টার্গেট করা যাবে না if (admins.includes(targetUserId)) { return message.reply(BOSS_NOTICE); } // কুলডাউন if (!senderIsAdmin) { const now = Date.now(); const last = global.tokaiCooldown.get(senderIdStr) || 0; const wait = COOLDOWN_MS - (now - last); if (wait > 0) { return message.reply(`⏳ ${Math.ceil(wait / 1000)} সেকেন্ড পরে আবার চেষ্টা কর।`); } global.tokaiCooldown.set(senderIdStr, now); } const cacheDir = path.join(__dirname, "cache"); const outputPath = path.join(cacheDir, `tokai_${Date.now()}.jpg`); try { await fs.ensureDir(cacheDir); // টেমপ্লেট লোড const templateRes = await axios.get(TEMPLATE_URL, { responseType: "arraybuffer", headers: { "User-Agent": "Mozilla/5.0" }, timeout: 30000 }); const templateImage = await 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 api.getUserInfo(targetUserId); const thumb = info[targetUserId]?.thumbSrc; if (!thumb) throw new Error("Profile picture পাওয়া যায়নি"); const r2 = await axios.get(thumb, { responseType: "arraybuffer", headers: { "User-Agent": "Mozilla/5.0" } }); picData = r2.data; } const avatar = await loadImage(Buffer.from(picData)); // Canvas এ ছবি বানানো const cv = 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 { const userData = await usersData.get(targetUserId); if (userData?.name) name = userData.name; } catch (e) {} if (name === "বন্ধু") { try { const info = await api.getUserInfo(targetUserId); if (info[targetUserId]?.name) name = info[targetUserId].name; } catch (e) {} } // ক্যাপশন র‍্যান্ডম নেওয়া const caption = CAPTIONS[Math.floor(Math.random() * CAPTIONS.length)]; const bodyText = name + "\n\n" + caption; // মেসেজ পাঠানো await message.reply({ body: bodyText, mentions: [{ tag: name, id: targetUserId }], attachment: fs.createReadStream(outputPath) }); // ক্লিনআপ try { await fs.unlink(outputPath); } catch (e) {} } catch (error) { try { await fs.unlink(outputPath); } catch (e) {} if (!senderIsAdmin) global.tokaiCooldown.delete(senderIdStr); console.error("Tokai Error:", error); return message.reply("Error: " + (error.message || "Unknown error")); } } };