This is my own personal bot, originally written in Python, designed to exist in a single small guild with friends.
Powered by:
| Typescript | discord.js | MongoDB | OpenCage | TomorrowIO | Craiyon | OpenAI | Uberduck |
|---|---|---|---|---|---|---|---|
- A server to host the JavaScript code (I use Heroku)
- (Optional) A MongoDB database (I use Atlas)
- Required by: Emoter, Weather, Mimic, Yeller, Reminder, Starboard
- (Optional) An OpenCage API key
- Required by: Weather
- (Optional) A TomorrowIO API key (used by the Weather module)
- Required by: Weather
- (Optional) A Uberduck username and password (used by the Uberduck module)
- Required by: Vocalizer
- (Optional) An OpenAI API key (used by the Autocomplete module)
- Required by: Autocomplete
NBOT_DISCORD_TOKEN- Your bot account's token (found here)NBOT_MONGODB_URI- Your MongoDB database URINBOT_MONGODB_AES_KEY- A random secure string used to encrypt saved messagesNBOT_OWNER_ID- The ID of the Discord account that should have full control over the bot- (Optional)
NBOT_OPENCAGE_API_KEY- Your OpenCage API key - (Optional)
NBOT_TOMORROW_API_KEY- Your TomorrowIO API key - (Optional)
NBOT_UBERDUCK_KEY- Your Uberduck username - (Optional)
NBOT_UBERDUCK_SECRET- Your Uberduck password
weather_guild_id- ID of a guild that houses all of the emotes used by the Weather module, expected names:UnknownClearMostlyClearPartlyCloudyMostlyCloudyCloudyFogLightFogDrizzleRainLightRainHeavyRainSnowFlurriesLightSnowHeavySnowFreezingDrizzleFreezingRainLightFreezingRainHeavyFreezingRainIcePelletsHeavyIcePelletsLightIcePelletsThunderstormemote_guild_id- ID of a guild where the bot can freely upload and delete emotes, used by the Emoter module. At least 3 free emote slots recommended, the more slots the more emotes you can pack in a single message. Excess slots are used by the cache to store recently used emotes for faster lookuppatchbot_redirects- JSON array used by the PatchBot module to redirect games to specific channels, e.g."League of Legends": "893193730692108298"would redirect all League of Legends patch notes to the channel with the given IDpermathreads- JSON array of thread IDs that should never expire, used by the Permathreads module
All modules are disabled by default, you can manage them via commands
/module list- Lists all available modules/module enable <module name>- Enables the given module for the current guild/module disable <module name>- Disables the given module for the current guild
Upload emotes via URL and use them without a Nitro subscription via $keyword
Slash commands:
/emoter add <keyword> <url>- Uploads an emote via URL and assigns it to the given keyword/emoter find <keyword>- Returns a list of emotes that lazily match the current keyword/emoter random- Picks a registered emote randomly and posts it to chat/emoter test- Tests whether a given keyword resolves to a valid emote/emoter edit <keyword> <url>- Edits an existing emote if you are the original uploader/emoter remove <keyword>- Deletes an emote if you are the original uploader
Play multiplayer games of Wordle, with words from 4 to 10 characters
Slash commands:
/wordle- Starts or continues a game of Wordle<length>- Length of the board<starter_words>- Space-separated list of words to pre-fill the board with
Allows you to mimic other users via old messages and markov chains (requires the other user has opted in)
Slash commands:
/mimic <user>- Posts 3 randomly generated sentences based on this user/mimic_optout- Deletes all stored data pertaining to your markov model (after opting in)
- Reposts PatchBot patch notes without the annoying advertisements
- Creates threads that never expire, by constantly bumping them. Must list the thread IDs in
config.ts
- Posts weather information for a given location
Slash commands:
/weather <address, city or country>
Allows users to freely set their name color to whatever value they want
Slash commands
/namecolor <hex string | auto | none>
- Wraps https://inspirobot.me to post a -somewhat- inspirational quote
Create reminders that show up at a given time
Slash commands
/reminder <message> <days> <hours> <minutes>
Posts random cute animals!
Slash commands
/animal <cat|dog|lizard>
Replies to ALL CAPS messages with previously sent ALL CAPS messages, it's very funny I promise.
Wraps UberduckAI's Vocalize to narrate prompts with a given voice
Slash commands:
/vocalize <voice> <prompt>
Wraps OpenAI's GPT-3 API to autocomplete the given prompt
Slash commands:
/complete <prompt>
Pictures any given prompt leveraging Craiyon (formelly DALL-E mini)
Slash commands
/imagine <prompt>
Bookmarks messages in a dedicated channel by reacting to them with "⭐"
Slash commands
- (admin only)
/starboard <channel>- Sets the given channel as the dedicated starboard channel








