Orion is a multi-purpose Discord bot designed for moderation, utility, and fun. It offers weather and currency APIs, news headlines, moderation tools, interactive mini-games, and more—all powered by discord.js.
-
Weather API: Get current weather for any location.
-
Bot Updates: Announce new features and bot changes interactively, with preview and @here notification.
-
Server Info: Get information about the server, including member count and creation date.
-
News Headlines: Get the top 3 latest news headlines for South Africa in the daily overview.
-
Currency Converter: Convert amounts between currencies.
-
Moderation Tools: Kick, ban, mute users, bulk delete messages, and filter bad words (case-insensitive, per-word toggling, instant moderation, and listing).
-
Bad Word Filter: Enable or disable filtering of specific words (case-insensitive, always stored and checked in lowercase), with instant message deletion and user notification.
-
List Bad Words: View all currently filtered words in a stylish embed (color:
#1e66f5). -
Polls: Create quick polls with custom questions, two options, and a timed voting period.
-
Mini-Games: Flip a coin, roll a dice, play rock-paper-scissors—all with interactive embeds.
-
User Utilities: Get any user's avatar with a single command.
-
Extras: Quick link to Dwayne's GitHub.
-
Clone the repository
git clone https://github.com/DwayneCrous/Orion.git cd Orion -
Install dependencies
npm install
-
Configure environment variables
Create a
.envfile in the root directory with the following:TOKEN=your_discord_bot_token CLIENT_ID=your_discord_client_id GUILD_ID=your_guild_id WEATHER_API_KEY=your_openweathermap_api_key NEWS_API_KEY=your_newsapi_key EXCHANGE_RATE_API_KEY=your_exchangerate_api_key WELCOME_CHANNEL_ID=your_welcome_channel_id BIRTHDAY_CHANNEL_ID=your_birthday_channel_id -
Register commands
Run the command registration script:
node src/register-commands.js
-
Start the bot
node src/index.js
/bot-updates [update:<string>]- Interactively compose and preview a bot update announcement. Edit the message before sending, then notify everyone online in the current channel with an embed and @here mention.
/get-avatar user:<user>- Get the avatar of any user.
/create-poll question:<string> option1:<string> option2:<string> duration:<minutes>- Create a poll with a custom question, two options, and a voting duration (in minutes). Users vote by reacting with 🟩 or 🟦. The bot announces the result when the poll ends.
/todays-overview- Get a daily overview with weather (now including a summary generated by Gemini) and top 3 news headlines for South Africa.
/get-weather location:<string> units:<Celsius|Fahrenheit>- Get current weather for a location.
/currency-convert amount:<number> from_currency:<string> to_currency:<string>- Convert currency amounts.
/server-info- Get information about the server, including member count, creation date, and server owner.
/remind-me time:<string> message:<string>- Set a personal reminder. The bot will DM you at the specified time.
/list-birthdays- List all registered user birthdays in the server.
/set-birthday date:<YYYY-MM-DD>- Set or update your birthday for birthday announcements.
/set-nickname user:<user> nickname:<string>- Change a user's nickname (requires permission).
/set-role user:<user> role:<role>- Assign a role to a user (requires permission).
/set-slowmode channel:<channel> duration:<seconds>- Set slowmode duration for a channel.
/expunge-message amount:<1-100> channel:<channel>- Bulk delete messages in a channel, with feedback on success or errors.
/kick-user user:<user> reason:<string>- Kick a user from the server, with detailed error handling.
/ban-user user:<user> reason:<string>- Ban a user from the server, with detailed error handling.
/mute-user user:<user> duration:<seconds>- Temporarily mute a user, with feedback.
/bad-word-filter toggle:<Enable|Disable> word:<string>- Enable or disable filtering of specific words.
/list-bad-words- List all words currently in the bad word filter.
/flip-coin- Flip a coin and get the result in an embed.
/dice-roll- Roll a dice (1-6) and see the result in an embed.
/rock-paper-scissors choice:<rock|paper|scissors>- Play against the bot with instant feedback and result embed.
/dwayne-github- Get a link to Dwayne's GitHub profile.
Pull requests and suggestions are welcome! Please open an issue for major changes.
This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0).