/discord-robo-and-cicd

Use discord.js、robo.js to build a discord bot. Deploy to Dosckr Hub by github action.

Primary LanguageTypeScript

Generated with create-robo magic!


Hiya, discord-robo 🌈

Welcome to your fresh Robo.js project!

Embark on a journey where your Discord projects transcend the ordinary. With Robo.js as your guide, you'll experience a seamless, file-based setup, an integrated database, TypeScript support, and a multitude of plugin-powered skills to unlock along the way.

Ready to embark on this adventure?

📚 Documentation: Getting started

🚀 Community: Join our Discord server

Running 🏃‍♂️

Run development mode with:

npm run dev

Your Robo refreshes with every change. 🔄

Psst... Check out the deployment instructions to keep your Robo online 24/7.

Developing 🏗️

Create new slash commands by making a new file under the /src/commands directory with an exported default function. The file's name becomes the command's name. You can either use the interaction parameter or return the result to let Sage handle it for you. For more info on commands, see the Discord.js Documentation.

Commands will be automatically registered with Discord when needed, but you can force it by running npx robo build -f.

To listen to new events, create a file named after the event in /src/events. For example, typingStart.js will notify you when someone starts typing. You can stack multiple files for the same event by making a directory named after the event. Files inside it can be named whatever you want. For example:

- src
  - events
    - typingStart
      - your-file.js
      - another.js

📚 Documentation: Slash commands

📚 Documentation: Events

📚 Documentation: Context Menus

Debugging 🐞

Got bugs? No biggie! Robo.js has your back with nifty built-in debugging magic. During dev mode, Robo will provide you with error information, stack traces, interactive logs, and even a sneak peek at the exact code that caused the issue!

To get started, set up a personal Discord server for your Robo to hang out in and add your server's ID as a DISCORD_GUILD_ID env variable. Doing this unlocks the fab debugging features, plus the super-handy /dev command that gives you quick access to logs, system info, and more.

📚 Documentation: Debugging

Configuration ⚙️

Robo.js automatically handles creating your Discord.js Client instance, but you can still configure what gets passed to it using the config/robo.mjs file. Use it to add more intents or change the behavior of other Robo.js features such as Sage.

The .env file contains your DISCORD_TOKEN and DISCORD_CLIENT_ID. Keep these secret. You can get these values from the Discord Developer Portal.

Plugins 🔌

This Robo boasts an intuitive plugin system that grants new capabilities instantly!

npx robo add @robojs/ai

Swap out @robojs/ai with your chosen plugin's package name

With that, your Robo automatically equips itself with all the features the plugin offers. Want to revert? Simply use robo remove to uninstall any plugin.

📚 Documentation: Installing plugins

Crafting something unique in your Robo project? You can turn your innovations into plugins, be it specific functionalities or your entire Robo. Share your genius with the world!

📚 Documentation: Creating plugins

Deployment 🚀

Run the deploy command to automatically deploy to RoboPlay once you're ready to keep your robo online 24/7.

npm run deploy

🚀 RoboPlay: Hosting your Robo

You can also self-host your robo anywhere that supports Node. Just make sure to run build followed by start:

npm run build
npm start

You can also run invite (beta) to automatically generate a server invite to test it yourself or show it off! You can also use the Discord Developer Portal to generate an invite as usual.

npm run invite

Happy coding! 🎉