Skip to content

DFanso/Ethos-bot

Repository files navigation

Discord Bot Boilerplate

Node.js Discord.js TypeScript License Issues Forks Stars

A boilerplate for building Discord bots using TypeScript, Discord.js, and Node.js.

Table of Contents

Installation

  1. Clone the repository:

    git clone https://github.com/DFanso/discord-bot-boilerplate.git
    cd discord-bot-boilerplate
  2. Install the dependencies:

    yarn install
  3. Compile the TypeScript code:

    yarn build

Configuration

Create a config.json file in the src directory with the following structure:

{
  "token": "YOUR_BOT_TOKEN",
  "clientId": "YOUR_CLIENT_ID"
}

Replace YOUR_BOT_TOKEN and YOUR_CLIENT_ID with your actual Discord bot token and client ID.

Usage

To start the bot, run:

yarn start

This will use nodemon to watch for file changes and automatically restart the bot.

Project Structure

my-project/
├── src/
│   ├── commands/
│   │   └── exampleCommand.ts
│   ├── events/
│   │   └── ready.ts
│   ├── services/
│   │   └── roleManager.ts
│   ├── config.json
│   └── index.ts
├── package.json
├── tsconfig.json
└── nodemon.json
  • commands/: Directory for command files.
  • events/: Directory for event files.
  • services/: Directory for additional services.
  • config.json: Configuration file containing the bot token and client ID.
  • index.ts: Entry point of the bot.

Commands and Events

  • Commands are stored in the src/commands directory and must export a data property with command metadata and an execute function.
  • Events are stored in the src/events directory and must export a name and execute function.

Example Command (src/commands/exampleCommand.ts)

import { CommandInteraction } from 'discord.js';

module.exports = {
  data: {
    name: 'example',
    description: 'Example command'
  },
  async execute(interaction: CommandInteraction) {
    await interaction.reply('Hello from the example command!');
  }
};

Example Event (src/events/ready.ts)

import { Client } from 'discord.js';

module.exports = {
  name: 'ready',
  once: true,
  execute(client: Client) {
    console.log(`${client.user?.tag} is online!`);
  }
};

Contributing

Contributions are welcome! Please create a pull request or open an issue to discuss your ideas.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published