import { text } from "@/utils/components"; import { type ChatInputCommandInteraction, type Client, SlashCommandBuilder, } from "discord.js"; import Uwuifier from "uwuifier"; const commandData = new SlashCommandBuilder() .setName("meow") .setDescription("mrrp~"); const meowVariants = [ "meow", "mew", "mrrow", "mrow", "mrrp", "miau", "miu", "nya", "mya", "mraow", "meowdy", "mrrr", "prrt", "prrp", "mreow", "mweow", "mwow", "mrrah", "mrawr", "myaa", "mrao", "chirp", "chirrup", "trill", "brr", "brrp", "ekekek", "mrrrow", "rawr", "rowl", "yowl", "caterwaul", "purr", "purrr", "prrrr", "rrrr", "mew mew", "squeek", "squeak", "mrrp mrrp", "brrrt", "prrow", "meep", "mrrph", "blepp", "raow", "reow", "mrrup", "mrraah", "mowww", "mao", ]; const suffixes = ["~", "!!", "!?", "?!", "...", "!11", "", "✧"]; const prefixes = ["m-", "", "", ""]; const emoticons = [ ">w<", "^w^", "=^w^=", "ฅ^•ﻌ•^ฅ", "(=^・ェ・^=)", "(=^‥^=)", "ฅ(•ㅅ•❀)ฅ", "₍˄·͈༝·͈˄₎", "(ΦωΦ)", "(=①ω①=)", "~(=^‥^)ノ", "", ]; function generateMeow(): string { const wordCount = Math.floor(Math.random() * 15) + 3; // 3-8 meows const words: string[] = []; for (let i = 0; i < wordCount; i++) { const prefix = prefixes[Math.floor(Math.random() * prefixes.length)]; const meow = meowVariants[Math.floor(Math.random() * meowVariants.length)]; const suffix = suffixes[Math.floor(Math.random() * suffixes.length)]; // sometimes extend the meow with repeated letters const extendedMeow = Math.random() > 0.5 ? meow.replace(/[aeiourw]/g, (m) => m.repeat(Math.floor(Math.random() * 4) + 1), ) : meow; words.push(`${prefix}${extendedMeow}${suffix}`); } return ( words.join(" ") + (Math.random() > 0.4 ? ` ${emoticons[Math.floor(Math.random() * emoticons.length)]}` : "") ); } async function execute( _client: Client, interaction: ChatInputCommandInteraction, ) { const uwuifier = new Uwuifier(); const meowText = generateMeow(); const uwuifiedMeowText = uwuifier.uwuifySentence(meowText); const blacklistedWords = [ "twerks", "sees bulge", "notices buldge", "starts twerking", ]; const finalText = blacklistedWords.reduce((acc, word) => { return acc.replace(new RegExp(word, "gi"), "----"); }, uwuifiedMeowText); await interaction.reply({ content: finalText, allowedMentions: { users: [interaction.user.id] }, }); } export default { data: commandData, execute, };