// code from goatstore // api: https://store.agi.bd module.exports = { config: { name: "font", version: "2.2", author: "NIROB ๐Ÿ–ค", countDown: 5, role: 1, // VIP role required (change if your VIP role id is different) shortDescription: "Stylish font converter", longDescription: "Convert your text into various stylish fonts", category: "text", guide: { en: "{pn} list โ€” Show all font styles\n{pn} [number] [text] โ€” Convert your text with selected font" } }, onStart: async function ({ event, message, args, usersData }) { // Check VIP access: role 1 means VIP users only // Adjust this check depending on your framework for roles if (this.config.role > 0) { // Suppose your usersData has roles: usersData[event.senderID].role const userRole = usersData?.[event.senderID]?.role || 0; if (userRole < this.config.role) { return message.reply("โŒ This command is only available for VIP users."); } } const fonts = [ { name: "๐“’๐“พ๐“ป๐“ผ๐“ฒ๐“ฟ๐“ฎ", converter: str => str.replace(/[A-Za-z]/g, c => { const base = c === c.toUpperCase() ? 0x1D4D0 : 0x1D4EA; return String.fromCodePoint(base + c.toLowerCase().charCodeAt(0) - 97); }) }, { name: "๐๐จ๐ฅ๐", converter: str => str.replace(/[A-Za-z]/g, c => { const base = c === c.toUpperCase() ? 0x1D400 : 0x1D41A; return String.fromCodePoint(base + c.toLowerCase().charCodeAt(0) - 97); }) }, { name: "๐˜๐˜ต๐˜ข๐˜ญ๐˜ช๐˜ค", converter: str => str.replace(/[A-Za-z]/g, c => { const base = c === c.toUpperCase() ? 0x1D434 : 0x1D44E; return String.fromCodePoint(base + c.toLowerCase().charCodeAt(0) - 97); }) }, { name: "๐™ˆ๐™ค๐™ฃ๐™ค๐™จ๐™ฅ๐™–๐™˜๐™š", converter: str => str.replace(/[A-Za-z]/g, c => { const base = 0x1D670; return String.fromCodePoint(base + c.toUpperCase().charCodeAt(0) - 65); }) }, { name: "๐™ฑ๐š˜๐š•๐š ๐™ผ๐š˜๐š—๐š˜", converter: str => str.replace(/[A-Za-z]/g, c => { const base = 0x1D6A8; return String.fromCodePoint(base + c.toUpperCase().charCodeAt(0) - 65); }) }, { name: "๐Ÿ…‘๐Ÿ…ž๐Ÿ…ง", converter: str => str.replace(/[A-Za-z]/g, c => { return "๐Ÿ…๐Ÿ…‘๐Ÿ…’๐Ÿ…“๐Ÿ…”๐Ÿ…•๐Ÿ…–๐Ÿ…—๐Ÿ…˜๐Ÿ…™๐Ÿ…š๐Ÿ…›๐Ÿ…œ๐Ÿ…๐Ÿ…ž๐Ÿ…Ÿ๐Ÿ… ๐Ÿ…ก๐Ÿ…ข๐Ÿ…ฃ๐Ÿ…ค๐Ÿ…ฅ๐Ÿ…ฆ๐Ÿ…ง๐Ÿ…จ๐Ÿ…ฉ"[c.toUpperCase().charCodeAt(0) - 65]; }) }, { name: "แ‘•OOแ’ช", converter: str => str.split('').map(c => { const map = { N: 'แ‘Ž', I: 'I', R: 'แ–‡', O: 'O', B: 'แ—ท' }; return map[c.toUpperCase()] || c; }).join('') }, { name: "โ“’โ“˜โ“กโ“’โ“›โ“”", converter: str => str.replace(/[A-Za-z]/g, c => { return String.fromCodePoint(0x24B6 + c.toUpperCase().charCodeAt(0) - 65); }) }, { name: "๐Ÿ„ฑ๐Ÿ„พ๐Ÿ…‡๐Ÿ„ด๐Ÿ„ณ", converter: str => str.replace(/[A-Za-z]/g, c => { return String.fromCodePoint(0x1F130 + c.toUpperCase().charCodeAt(0) - 65); }) }, { name: "แด›ษชษดส", converter: str => str.replace(/[A-Za-z]/g, c => { const tiny = { a:'แด€', b:'ส™', c:'แด„', d:'แด…', e:'แด‡', f:'า“', g:'ษข', h:'สœ', i:'ษช', j:'แดŠ', k:'แด‹', l:'สŸ', m:'แด', n:'ษด', o:'แด', p:'แด˜', q:'วซ', r:'ส€', s:'s', t:'แด›', u:'แดœ', v:'แด ', w:'แดก', x:'x', y:'ส', z:'แดข' }; return [...str].map(c => tiny[c.toLowerCase()] || c).join(''); }) }, { name: "๏ผญ๏ผฏ๏ผฎ๏ผฏใ€€๏ผฆ๏ผต๏ผฌ๏ผฌ", converter: str => str.replace(/[A-Za-z]/g, c => { return String.fromCharCode(c.charCodeAt(0) + 0xFEE0); }) }, { name: "๐Ÿ…ฃ๐Ÿ…˜๐Ÿ…ฃ๐Ÿ…›๐Ÿ…”", converter: str => str.toUpperCase().split('').reverse().join('') }, { name: "๐”Š๐”ฌ๐”ฑ๐”ฅ๐”ฆ๐” ", converter: str => str.replace(/[A-Za-z]/g, c => { const base = c === c.toUpperCase() ? 0x1D504 : 0x1D51E; return String.fromCodePoint(base + c.toLowerCase().charCodeAt(0) - 97); }) }, { name: "๐–˜๐–ˆ๐–†๐–—๐–ž", converter: str => str.replace(/[A-Za-z]/g, c => { const scary = { A:'๐–†', B:'๐–‡', C:'๐–ˆ', D:'๐–‰', E:'๐–Š', F:'๐–‹', G:'๐–Œ', H:'๐–', I:'๐–Ž', J:'๐–', K:'๐–', L:'๐–‘', M:'๐–’', N:'๐–“', O:'๐–”', P:'๐–•', Q:'๐––', R:'๐–—', S:'๐–˜', T:'๐–™', U:'๐–š', V:'๐–›', W:'๐–œ', X:'๐–', Y:'๐–ž', Z:'๐–Ÿ' }; return [...str].map(c => scary[c.toUpperCase()] || c).join(''); }) }, { name: "ษนวสŒวษนsวd", converter: str => str.split('').map(c => { const flip = { a:'ษ', b:'q', c:'ษ”', d:'p', e:'ว', f:'ษŸ', g:'ฦƒ', h:'ษฅ', i:'แด‰', j:'ษพ', k:'สž', l:'สƒ', m:'ษฏ', n:'u', o:'o', p:'d', q:'b', r:'ษน', s:'s', t:'ส‡', u:'n', v:'สŒ', w:'ส', x:'x', y:'สŽ', z:'z', '.':'ห™', ',':'\'', '\'':',', '"':',,', '_':'โ€พ', '?':'ยฟ', '!':'ยก', '[':']', '(':')', '{':'}', ']':'[', ')':'(', '}':'{' }; return flip[c.toLowerCase()] || c; }).reverse().join('') } ]; if (!args[0]) { return message.reply("โŒ Please provide a font number or type `list` to see all fonts.\nExample:\nfont list\nfont 3 Hello"); } if (args[0].toLowerCase() === "list") { let listMsg = "๐Ÿ–‹๏ธ Available Fonts:\n\n"; fonts.forEach((f, i) => { listMsg += `${i+1}. ${f.name}\n`; }); return message.reply(listMsg); } const fontIndex = parseInt(args[0], 10); if (!fontIndex || fontIndex < 1 || fontIndex > fonts.length) { return message.reply("โŒ Invalid font number. Use `font list` to see available fonts."); } // If no text given, default to "NIROB" const textToConvert = args.slice(1).join(' ') || "NIROB"; const converted = fonts[fontIndex - 1].converter(textToConvert); return message.reply(converted); } };