Skip to content
Geovane Saraiva da Silva edited this page Feb 17, 2025 · 2 revisions

Documentação - Discord Bot Template

Visão Geral

Este projeto é um template para criar bots do Discord usando a biblioteca discord.js. Ele inclui uma estrutura básica para comandos e eventos, além de funcionalidades para registrar comandos de barra (slash commands) e gerenciar eventos.

Índice

  1. Instalação
  2. Configuração
  3. Rodando o Bot
  4. Estrutura do Projeto
  5. Classes e Métodos
  6. Criando Novos Comandos
  7. Criando Novos Eventos

Instalação

Para instalar o projeto, siga os passos abaixo:

  1. Clone o repositório:

    git clone https://github.com/0LostConnection/discord-bot-template
    cd discord-bot-template
  2. Instale as dependências:

    bun install

Configuração

  1. Crie um arquivo .env na raiz do projeto e adicione as seguintes variáveis de ambiente:

    CLIENT_TOKEN=seu-token-do-discord
    CLIENT_ID=seu-id-do-cliente
    DEBUG_GUILD_ID=id-da-guilda-de-debug
    GUILD_ID=id-da-guilda
  2. Configure os intents no arquivo src/index.js:

    import { GatewayIntentBits } from "discord.js";
    import { DiscordClient } from "./core/DiscordClient";
    import * as dotenv from "dotenv";
    dotenv.config();
    
    const botInstance = new DiscordClient({
        intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers],
    });
    
    botInstance.login(process.env.CLIENT_TOKEN);

Rodando o Bot

Para rodar o bot, execute o seguinte comando:

bun start

Estrutura do Projeto

A estrutura do projeto é organizada da seguinte forma:

discord-bot-template/
├── src/
│   ├── commands/
│   │   ├── debug/
│   │   │   └── teste/
│   │   │       └── pong.js
│   │   ├── guild/
│   │   │   └── teste/
│   │   │       └── ping.js
│   ├── core/
│   │   ├── Command.js
│   │   ├── DiscordClient.js
│   │   └── Event.js
│   ├── events/
│   │   ├── InteractionCreateEvent.js
│   │   └── ReadyEvent.js
│   └── index.js
├── .env
├── package.json
└── README.md

Classes e Métodos

Command

A classe Command é a base para todos os comandos do bot e estende a classe SlashCommandBuilder do discord.js. Para mais informações sobre SlashCommandBuilder, consulte a documentação oficial.

Métodos

  • constructor(): Cria uma nova instância de um comando.
  • setDebug(boolean): Define se o comando está em modo de depuração.
  • setGuildOnly(boolean): Define se o comando é específico de uma guild.
  • setDisabled(boolean): Define se o comando está desabilitado.
  • execute(client, interaction): Método a ser implementado por cada comando específico.

DiscordClient

A classe DiscordClient estende o cliente do Discord.js para adicionar funcionalidades específicas.

Métodos

  • constructor(options): Cria uma nova instância do DiscordClient.
  • setupEvents(): Configura os eventos do bot.
  • setupSlashCommands(): Configura os comandos de barra (slash commands) do bot.
  • registerSlashCommands(): Registra os comandos de barra (slash commands) do bot.

Event

A classe Event é a base para todos os eventos do bot.

Métodos

  • constructor(name): Cria uma nova instância de um evento.
  • execute(client, ...args): Método a ser implementado por cada evento específico.

Criando Novos Comandos

Para criar um novo comando, siga os passos abaixo:

  1. Crie um novo arquivo de comando na pasta src/commands. Por exemplo, src/commands/guild/teste/hello.js.

  2. Importe a classe Command e crie uma nova classe que estende Command:

    import { CommandInteraction } from "discord.js";
    import { Command } from "@core/Command";
    
    export default class HelloCommand extends Command {
        constructor() {
            super();
            this.setName("hello");
            this.setDescription('Responde com "Hello, World!"');
            this.setGuildOnly(true);
            this.setDebug(false);
            this.setDisabled(false);
        }
    
        execute(client, interaction) {
            interaction.reply("Hello, World!");
        }
    }
  3. O novo comando será automaticamente registrado quando o bot for iniciado.

Criando Novos Eventos

Para criar um novo evento, siga os passos abaixo:

  1. Crie um novo arquivo de evento na pasta src/events. Por exemplo, src/events/MessageCreateEvent.js.

  2. Importe a classe Event e crie uma nova classe que estende Event:

    import { Event } from "../core/Event";
    import { DiscordClient } from "../core/DiscordClient";
    
    export default class MessageCreateEvent extends Event {
        constructor() {
            super("messageCreate");
        }
    
        async execute(client, message) {
            if (message.content === "!hello") {
                message.reply("Hello, World!");
            }
        }
    }
  3. O novo evento será automaticamente registrado quando o bot for iniciado.