-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
- Instalação
- Configuração
- Rodando o Bot
- Estrutura do Projeto
- Classes e Métodos
- Criando Novos Comandos
- Criando Novos Eventos
Para instalar o projeto, siga os passos abaixo:
-
Clone o repositório:
git clone https://github.com/0LostConnection/discord-bot-template cd discord-bot-template -
Instale as dependências:
bun install
-
Crie um arquivo
.envna 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
-
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);
Para rodar o bot, execute o seguinte comando:
bun startA 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
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.
-
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.
A classe DiscordClient estende o cliente do Discord.js para adicionar funcionalidades específicas.
-
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.
A classe Event é a base para todos os eventos do bot.
-
constructor(name): Cria uma nova instância de um evento. -
execute(client, ...args): Método a ser implementado por cada evento específico.
Para criar um novo comando, siga os passos abaixo:
-
Crie um novo arquivo de comando na pasta
src/commands. Por exemplo,src/commands/guild/teste/hello.js. -
Importe a classe
Commande crie uma nova classe que estendeCommand: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!"); } }
-
O novo comando será automaticamente registrado quando o bot for iniciado.
Para criar um novo evento, siga os passos abaixo:
-
Crie um novo arquivo de evento na pasta
src/events. Por exemplo,src/events/MessageCreateEvent.js. -
Importe a classe
Evente crie uma nova classe que estendeEvent: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!"); } } }
-
O novo evento será automaticamente registrado quando o bot for iniciado.