// code from goatstore // api: https://store.agi.bd const axios = require('axios'); const { createCanvas, loadImage } = require('canvas'); const fs = require('fs-extra'); const path = require('path'); const fetchAvatar = async (uid) => { try { const avatarUrl = `https://graph.facebook.com/${uid}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`; const finalUrl = avatarUrl.includes("?") ? `${avatarUrl}&t=${Date.now()}` : `${avatarUrl}?t=${Date.now()}`; const response = await axios.get(finalUrl, { responseType: "arraybuffer", timeout: 15000, headers: { "User-Agent": "Mozilla/5.0" }, }); return Buffer.from(response.data); } catch (error) { throw new Error(`Failed to fetch avatar: ${error.message}`); } }; module.exports = { config: { name: 'dim', aliases: ['anda'], version: '2.1', author: '๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐', // เฆจเฆพเฆฎ เฆชเฆฐเฆฟเฆฌเฆฐเงเฆคเฆจ เฆ•เฆฐเฆฒเง‡ เฆฌเฆŸ เฆฌเฆจเงเฆง เฆนเฆฏเฆผเง‡ เฆฏเฆพเฆฌเง‡ role: 0, category: 'fun', shortDescription: 'Turn someone into dim meme', longDescription: 'Funny dim meme with avatar on egg head', guide: '{pn} @mention / reply' }, onStart: async function ({ event, api, message }) { const LOCKED_AUTHOR = "๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐"; if (module.exports.config.author !== LOCKED_AUTHOR) { const lockMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป โ›” ๐—™๐—œ๐—Ÿ๐—˜ ๐—Ÿ๐—ข๐—–๐—ž๐—˜๐—— ยป โŒ เฆธเฆฟเฆฏเฆผเฆพเฆฎ เฆญเฆพเฆ‡ เฆเฆฐ เฆจเฆพเฆฎ ยป ๐Ÿคฆ เฆชเฆฐเฆฟเฆฌเฆฐเงเฆคเฆจ เฆ•เฆฐเฆพ เฆนเฆฏเฆผเง‡เฆ›เง‡! ยป โš ๏ธ เฆเฆ‡ เฆ•เฆฎเฆพเฆจเงเฆกเฆŸเฆฟ เฆจเฆทเงเฆŸ เฆ•เฆฐเฆพ เฆนเฆฒเง‹เฅค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; return message.reply(lockMsg); } try { const targetID = event.mentions && Object.keys(event.mentions).length > 0 ? Object.keys(event.mentions)[0] : event.messageReply?.senderID; if (!targetID) { const noMentionMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป โš ๏ธ เฆ•เฆพเฆ‰เฆ•เง‡ ๐— ๐—ฒ๐—ป๐˜๐—ถ๐—ผ๐—ป ยป ๐Ÿ†” ๐”๐ˆ๐ƒ เฆฌเฆพ ๐—ฅ๐—ฒ๐—ฝ๐—น๐˜† เฆฆเฆฟเฆจ! โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; return message.reply(noMentionMsg); } if (targetID === event.senderID) { const selfMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿ™„ เฆเฆ‡ เฆฌเฆฒเฆฆ เฆจเฆฟเฆœเง‡เฆ•เง‡ ๐——๐—ถ๐—บ ยป ๐Ÿคง เฆฌเฆพเฆจเฆพเฆจเง‹ เฆฏเฆพเฆฌเง‡ เฆจเฆพ! โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; return message.reply(selfMsg); } const waitMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป โณ ๐——๐—ถ๐—บ เฆฌเฆพเฆจเฆพเฆจเง‹ เฆนเฆšเงเฆ›เง‡... ยป ๐Ÿš€ เฆ…เฆจเงเฆ—เงเฆฐเฆน เฆ•เฆฐเง‡ เฆ•เฆฟเฆ›เงเฆ•เงเฆทเฆฃ ยป ๐Ÿ‘ฐ เฆ…เฆชเง‡เฆ•เงเฆทเฆพ เฆ•เฆฐเงเฆจเฅค... โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; await message.reply(waitMsg); const avatarBuffer = await fetchAvatar(targetID); const avatar = await loadImage(avatarBuffer); const cacheDir = path.join(__dirname, 'cache', 'dim'); await fs.ensureDir(cacheDir); const bgPath = path.join(cacheDir, 'bg.jpg'); let bg; if (!fs.existsSync(bgPath)) { const bgRes = await axios.get( 'https://i.postimg.cc/Wbt5GLY7/5674fba3a393f7578a73919569b5147f.jpg', { responseType: 'arraybuffer' } ); await fs.writeFile(bgPath, bgRes.data); bg = await loadImage(bgRes.data); } else { bg = await loadImage(await fs.readFile(bgPath)); } const canvas = createCanvas(bg.width, bg.height); const ctx = canvas.getContext('2d'); ctx.drawImage(bg, 0, 0); const size = 150; const x = 100; const y = 60; ctx.save(); ctx.beginPath(); ctx.arc(x + size / 2, y + size / 2, size / 2, 0, Math.PI * 2); ctx.closePath(); ctx.shadowColor = 'rgba(0,0,0,0.4)'; ctx.shadowBlur = 10; ctx.shadowOffsetX = 2; ctx.shadowOffsetY = 2; ctx.clip(); ctx.drawImage(avatar, x, y, size, size); ctx.restore(); ctx.beginPath(); ctx.arc(x + size / 2, y + size / 2, size / 2 + 3, 0, Math.PI * 2); ctx.strokeStyle = '#fff'; ctx.lineWidth = 5; ctx.stroke(); ctx.font = 'bold 28px Arial'; ctx.fillStyle = '#ffffff'; ctx.textAlign = 'center'; ctx.strokeStyle = '#000000'; ctx.lineWidth = 4; const text = 'PURE DIM ๐Ÿ˜‚'; ctx.strokeText(text, bg.width / 2, bg.height - 40); ctx.fillText(text, bg.width / 2, bg.height - 40); const output = path.join(cacheDir, `${targetID}_${Date.now()}.png`); await fs.writeFile(output, canvas.toBuffer()); const info = await api.getUserInfo(targetID); const name = info[targetID]?.name || 'Someone'; const successMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿฅš ${name} ยป ๐Ÿซก เฆเฆ–เฆจ เฆเฆ•เฆฆเฆฎ ๐——๐—ถ๐—บ! ยป ๐Ÿคฌ เฆ†เฆฐ เฆฌเง‡เฆฏเฆผเฆพเฆฆเฆฌเฆฟ เฆ•เฆฐเฆฟเฆธ เฆจเฆพ! ยป ๐Ÿฎ-๐Ÿซต-๐Ÿ™„-๐Ÿ˜-๐Ÿฅต-๐Ÿฅฑ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; await message.reply({ body: successMsg, mentions: [{ tag: name, id: targetID }], attachment: fs.createReadStream(output) }); setTimeout(() => fs.unlink(output).catch(() => {}), 5000); } catch (e) { console.error(e); let errorMsg; if (e.message.includes('Failed to fetch avatar')) { errorMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป โŒ ๐—”๐˜ƒ๐—ฎ๐˜๐—ฎ๐—ฟ เฆ†เฆจเฆคเง‡ เฆธเฆฎเฆธเงเฆฏเฆพ เฆนเงŸเง‡เฆ›เง‡! ยป ๐Ÿ”’ เฆชเงเฆฐเง‹เฆซเฆพเฆ‡เฆฒ ๐—ฃ๐—ฟ๐—ถ๐˜ƒ๐—ฎ๐˜๐—ฒ เฆนเฆคเง‡ เฆชเฆพเฆฐเง‡เฅค โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; } else { errorMsg = `ยป ๐Ÿ‘‘ ๐’๐ˆ๐˜๐€๐Œ-๐‡๐€๐’๐€๐ ๐Ÿ‘‘ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป โŒ ๐——๐—ถ๐—บ เฆฌเฆพเฆจเฆพเฆคเง‡ เฆธเฆฎเฆธเงเฆฏเฆพ เฆนเงŸเง‡เฆ›เง‡! โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ยป ๐Ÿงšโ€โ™€๏ธ โ€ฟ๐—ก๐—œ๐—๐—›๐—จ๐—  ๐—–๐—›๐—”๐—ง๐—•๐—ข๐—ง`; } return message.reply(errorMsg); } } };