const { SlashCommandBuilder, ContainerBuilder, TextDisplayBuilder, MessageFlags } = require('discord.js'); module.exports = { data: new SlashCommandBuilder() .setName('username') .setDescription('Generate 3-5 unique usernames for games or Discord using a beautiful container!') .addStringOption(option => option.setName('theme') .setDescription('Choose a theme for your username') .setRequired(false) .addChoices( { name: 'Random', value: 'random' }, { name: 'Gamer', value: 'gamer' }, { name: 'Cute', value: 'cute' }, { name: 'Spooky', value: 'spooky' } )) .addBooleanOption(option => option.setName('numbers') .setDescription('Do you want numbers added to the username?') .setRequired(false)) .addBooleanOption(option => option.setName('use_your_name') .setDescription('Use your Discord username as part of suggestions?') .setRequired(false)) .addBooleanOption(option => option.setName('special_chars') .setDescription('Do you want special characters (_ - ~) added?') .setRequired(false)), async execute(interaction) { const theme = interaction.options.getString('theme') || 'random'; const addNumbers = interaction.options.getBoolean('numbers') || false; const useYourName = interaction.options.getBoolean('use_your_name') || false; const addSpecialChars = interaction.options.getBoolean('special_chars') || false; const usernameInput = interaction.user.username; const parts = { random: { adjectives: [ 'Epic', 'Crazy', 'Silent', 'Dark', 'Flying', 'Mighty', 'Swift', 'Sneaky', 'Funky', 'Shadow', 'Brave', 'Wild', 'Lucky', 'Quick', 'Angry', 'Bright', 'Cool', 'Happy', 'Smart', 'Crazy', 'Bold', 'Strong', 'Chill', 'Hyper', 'Crazy', 'Witty', 'Fierce', 'Calm', 'Shiny', 'Lucky', 'Silent', 'Daring', 'Fearless', 'Swift', 'Brave', 'Smooth', 'Clever', 'Epic', 'Crazy', 'Jolly', 'Magic', 'Silent', 'Ghostly', 'Crazy', 'Swift', 'Flying', 'Shadow', 'Funky', 'Mighty', 'Bold' ], nouns: [ 'Tiger', 'Dragon', 'Ninja', 'Wizard', 'Warrior', 'Samurai', 'Knight', 'Ghost', 'Rider', 'Assassin', 'Hunter', 'Phoenix', 'Falcon', 'Lion', 'Wolf', 'Bear', 'Shark', 'Panther', 'Eagle', 'Rogue', 'Viper', 'Slayer', 'Champion', 'Rider', 'Storm', 'Blade', 'Fighter', 'Sorcerer', 'Ranger', 'Ghost', 'Shadow', 'Warden', 'Titan', 'Gladiator', 'Paladin', 'Vanguard', 'Knight', 'Wizard', 'Assassin', 'Hunter', 'Ranger', 'Dragon', 'Wolf', 'Tiger', 'Phoenix', 'Shadow', 'Fury', 'Knight', 'Mage', 'Champion' ] }, gamer: { adjectives: [ 'Pro', 'Elite', 'Mega', 'Ultra', 'Stealth', 'Pixel', 'Cyber', 'Neo', 'Vortex', 'Alpha', 'Omega', 'Hyper', 'Shadow', 'Dark', 'Epic', 'Rapid', 'Turbo', 'Silent', 'Quick', 'Fierce', 'Ghost', 'Blade', 'Rogue', 'Ninja', 'Sniper', 'Storm', 'Flame', 'Ice', 'Lightning', 'Deadly', 'Vicious', 'Sharp', 'Crazy', 'Legend', 'Ultimate', 'Swift', 'Strong', 'Brave', 'Clever', 'Lucky', 'Hyper', 'Mega', 'Cyber', 'Pixel', 'Neo', 'Alpha', 'Omega', 'Stealth', 'Rogue', 'Fury', 'Titan', 'Blaze', 'Frost', 'Inferno', 'Shadow' ], nouns: [ 'Sniper', 'Gamer', 'Player', 'Bot', 'Destroyer', 'Hunter', 'Slayer', 'Champion', 'Warrior', 'Assault', 'Ranger', 'Knight', 'Mage', 'Wizard', 'Rogue', 'Assassin', 'Viper', 'Titan', 'Gladiator', 'Paladin', 'Phantom', 'Dragon', 'Wolf', 'Tiger', 'Falcon', 'Eagle', 'Shadow', 'Storm', 'Blade', 'Fighter', 'Hunter', 'Ninja', 'Ghost', 'Rider', 'Slayer', 'Champion', 'Vanguard', 'Alpha', 'Omega', 'Fury', 'Blaze', 'Inferno', 'Frost', 'Titan', 'Rogue', 'Vortex', 'Sniper', 'Ranger', 'Wizard', 'Sorcerer' ] }, cute: { adjectives: [ 'Fluffy', 'Sweet', 'Tiny', 'Happy', 'Bubbly', 'Cuddly', 'Shiny', 'Lovely', 'Choco', 'Berry', 'Sugar', 'Candy', 'Sweetie', 'Bubble', 'Tiny', 'Soft', 'Lovely', 'Cute', 'Pink', 'Sparkle', 'Joyful', 'Sunny', 'Bright', 'Sweet', 'Little', 'Tiny', 'Snuggle', 'Dreamy', 'Fairy', 'Lovely', 'Happy', 'Bubbly', 'Magic', 'Sparkly', 'Shiny', 'Fuzzy', 'Cuddly', 'Sweet', 'Tiny', 'Charming', 'Lovely', 'Gentle', 'Rainbow', 'Happy', 'Twinkle', 'Soft', 'Cherry', 'Joy', 'Magic', 'Angel' ], nouns: [ 'Kitten', 'Panda', 'Bunny', 'Unicorn', 'Cupcake', 'Angel', 'Butterfly', 'Puppy', 'Cloud', 'Star', 'Kitty', 'Candy', 'Peach', 'Cookie', 'Cupcake', 'Bear', 'Dove', 'Puppy', 'Fairy', 'Sparkle', 'Rainbow', 'Flower', 'Cherry', 'Fawn', 'Bunny', 'Kitten', 'Panda', 'Unicorn', 'Angel', 'Cupcake', 'Twinkle', 'Star', 'Peach', 'Honey', 'Snowflake', 'Sunshine', 'Blossom', 'Petal', 'Lily', 'Daisy', 'Cloud', 'Muffin', 'Cookie', 'Butterfly', 'Cuddles', 'Snuggle', 'Choco', 'Berry', 'Moon', 'Star' ] }, spooky: { adjectives: [ 'Dark', 'Haunted', 'Ghostly', 'Shadow', 'Creepy', 'Silent', 'Bloody', 'Vampire', 'Wicked', 'Night', 'Grim', 'Eerie', 'Sinister', 'Chilling', 'Deadly', 'Morbid', 'Ghastly', 'Dreadful', 'Wicked', 'Frightful', 'Cursed', 'Phantom', 'Horror', 'Twilight', 'Midnight', 'Freaky', 'Scary', 'Spooky', 'Haunted', 'Terrifying', 'Sinister', 'Gloomy', 'Mysterious', 'Macabre', 'Hollow', 'Nightmare', 'Wicked', 'Bleak', 'Evil', 'Cursed', 'Spectral', 'Shadowy', 'Bloodthirsty', 'Fearful', 'Ghoul', 'Phantom', 'Wraith', 'Zombie', 'Banshee', 'Reaper' ], nouns: [ 'Specter', 'Ghoul', 'Phantom', 'Wraith', 'Zombie', 'Banshee', 'Vampire', 'Skeleton', 'Reaper', 'Demon', 'Ghost', 'Shade', 'Poltergeist', 'Ghoul', 'Nightmare', 'Witch', 'Warlock', 'Beast', 'Horror', 'Haunt', 'Spirit', 'Fiend', 'Banshee', 'Vampire', 'Reaper', 'Shadow', 'Skeleton', 'Zombie', 'Monster', 'Apparition', 'Demon', 'Ghast', 'Specter', 'Phantom', 'Wraith', 'Poltergeist', 'Shade', 'Spirit', 'Ghoul', 'Witch', 'Vampire', 'Reaper', 'Ghost', 'Nightmare', 'Banshee', 'Shade', 'Fright', 'Shadow', 'Apparition', 'Beast' ] } }; const selected = parts[theme] || parts.random; const count = 5; const usernames = []; const specialChars = ['_', '-', '~']; while (usernames.length < count) { let adj = selected.adjectives[Math.floor(Math.random() * selected.adjectives.length)]; let noun = selected.nouns[Math.floor(Math.random() * selected.nouns.length)]; let username = ''; if (useYourName) { username = Math.random() < 0.5 ? `${usernameInput}${adj}` : `${adj}${usernameInput}`; } else { username = `${adj}${noun}`; } if (addNumbers) { const number = Math.floor(Math.random() * 100) + 1; username += number; } if (addSpecialChars) { const char = specialChars[Math.floor(Math.random() * specialChars.length)]; username = `${char}${username}${char}`; } if (!usernames.includes(username)) usernames.push(username); } const container = new ContainerBuilder().addTextDisplayComponents( new TextDisplayBuilder() .setContent( `🎮 **Your Unique Username Suggestions** 🎮\n\n` + usernames.map((u, i) => `**${i + 1}.** \`${u}\``).join('\n') + `\n\n_Requested by ${interaction.user.username}_` ) ); await interaction.reply({ flags: MessageFlags.IsComponentsV2, components: [container] }); }, };