### Bot Setup in Discord Developer Portal 1. Go to the [Discord Developer Portal](https://discord.com/developers/applications) 2. Create a new application or select your existing one 3. Go to the "Bot" tab 4. Enable the following Privileged Gateway Intents: - SERVER MEMBERS INTENT - MESSAGE CONTENT INTENT 5. Save changes 6. Create an invite link: - Go to OAuth2 > URL Generator - Under "SCOPES", select "bot" and "applications.commands" - Under "BOT PERMISSIONS", select: - Read Messages/View Channels - Send Messages - Connect - Speak - Change Nickname - Copy the generated URL and use it to invite your bot to servers # Multi-Theme Discord Bot A Discord bot that simulates various animal behaviors in your server! Choose from different themes like cats, dogs, foxes, or robots. ## Features - Multiple themes to choose from (cat, dog, fox, robot) - Randomly responds to messages with theme-specific vocalizations and actions - Joins voice channels when people are active and plays themed sounds - Fully configurable behavior (response chance, timing, pronoun preferences) - Realistic animal-like unpredictable behavior - Dynamic status messages that change regularly **and adapt based on voice channel presence** - Per-server configuration (each server can have its own theme) - Each theme has unique nicknames that the bot randomly assigns itself - Bot automatically changes its Discord nickname to match the theme - Support for multiple servers simultaneously with independent configurations - Can join voice channels in multiple servers at the same time ## Setup ### Prerequisites - Node.js 16.9.0 or higher - npm or yarn - A Discord bot token (create one at the [Discord Developer Portal](https://discord.com/developers/applications)) ### Installation 1. Clone this repository 2. Install dependencies: ``` npm install ``` or ``` yarn install ``` 3. Copy the example environment file: ``` cp .env.example .env ``` 4. Edit the `.env` file and add your Discord bot token and configure other settings 5. Add cat sound files to the `src/audio` directory (MP3 format) 6. Build the project: ``` npm run build ``` or ``` yarn build ``` 7. Start the bot: ``` npm start ``` or ``` yarn start ``` ### Required Bot Permissions When adding your bot to a Discord server, make sure it has the following permissions: - Read Messages/View Channels - Send Messages - Connect to Voice Channels - Speak in Voice Channels - Change Nickname (for theme-based nicknames) ### Adding Audio Files The bot expects audio files for each theme to be placed in the `src/audio` directory. The naming convention is: `theme_sound.mp3` (e.g., cat_meow1.mp3, dog_bark1.mp3) Recommended files for each theme: **Cat Theme**: - cat_meow1.mp3 - cat_meow2.mp3 - cat_meow3.mp3 - cat_purr.mp3 - cat_hiss.mp3 - cat_yowl.mp3 **Dog Theme**: - dog_bark1.mp3 - dog_bark2.mp3 - dog_whine.mp3 - dog_pant.mp3 - dog_growl.mp3 - dog_howl.mp3 **Fox Theme**: - fox_bark.mp3 - fox_scream.mp3 - fox_yip.mp3 - fox_howl.mp3 - fox_chirp.mp3 **Robot Theme**: - robot_beep.mp3 - robot_whir.mp3 - robot_startup.mp3 - robot_shutdown.mp3 - robot_error.mp3 - robot_process.mp3 ## Configuration All bot settings can be adjusted in the `.env` file: | Setting | Description | Default | |---------|-------------|---------| | DISCORD_TOKEN | Your Discord bot token | (required) | | APPLICATION_ID | Your application ID for slash commands | (required) | | MESSAGE_RESPONSE_CHANCE | Percentage chance to respond to a message (0-100) | 10 | | MIN_VOICE_JOIN_INTERVAL | Minimum time in seconds between voice channel joins | 300 | | MAX_VOICE_JOIN_INTERVAL | Maximum time in seconds between voice channel joins | 1800 | | MIN_VOICE_STAY_DURATION | Minimum time in seconds to stay in a voice channel | 60 | | MAX_VOICE_STAY_DURATION | Maximum time in seconds to stay in a voice channel | 300 | | MIN_VOICE_MEOW_INTERVAL | Minimum time in seconds between sounds in voice channel | 5 | | MAX_VOICE_MEOW_INTERVAL | Maximum time in seconds between sounds in voice channel | 30 | | STATUS_UPDATE_INTERVAL | How often (in seconds) the bot changes its status | 300 | | DEFAULT_THEME | Default theme for new servers (cat, dog, fox, robot) | cat | | CAT_PRONOUN | Default pronoun to use for actions (their, his, her, etc.) | their | ## Slash Commands The bot provides slash commands for server administrators to customize its behavior: - `/theme set ` - Change the bot's theme (cat, dog, fox, robot) - `/theme info` - View information about the current theme - `/settings response ` - Set how often the bot responds (0-100%) - `/settings pronoun ` - Set which pronoun the bot uses (their, his, her, etc.) - `/settings view` - View current settings ## Theme Nicknames Each time you change the theme, the bot randomly selects a nickname from the theme's list: **Cat Theme**: Whiskers, Mittens, Shadow, Luna, Oliver, Simba, Bella, Mr. Purrington, Fluffy, Captain Fuzzyboots **Dog Theme**: Buddy, Max, Bailey, Cooper, Daisy, Sir Barksalot, Fido, Rover, Scout, Captain Goodboy **Fox Theme**: Sly, Rusty, Firefox, Swift, Amber, Vixen, Todd, Reynard, Professor Pounce **Robot Theme**: B33P-B00P, CyberTron, Metal Friend, Unit-7, RoboCompanion, Circuit, T1000, BinaryBuddy, Mechanoid, SynthFriend ## Voice-Aware Status Messages The bot changes its status messages depending on whether it's in a voice channel: ### Cat Theme Example: - **Normal:** 🐱 hunting mice, 🐱 plotting world domination, 🐱 napping in a sunbeam - **In Voice Channel:** 🐱 purring loudly, 🐱 meowing for attention, 🐱 batting at microphones ### Dog Theme Example: - **Normal:** 🐶 chasing squirrels, 🐶 fetching balls, 🐶 guarding the house - **In Voice Channel:** 🐶 barking excitedly, 🐶 panting into the mic, 🐶 howling along ## License MIT