Handlers

O que são Handlers?

Handlers são responsáveis por organizar e gerenciar os componentes do seu bot, como comandos, eventos e outras funcionalidades.

Com a simpleDiscordLib, você pode configurar handlers facilmente para criar bots estruturados e eficientes.

Criando Comandos

Com a simpleDiscordLib, criar comandos é simples. Basta seguir o exemplo abaixo:


// src/commands/prefix/ping.js
const { PrefixCommand } = require("simple-discord-lib")

module.exports = new PrefixCommand()
  .setName("dm")
  .setDescription('Envie uma mensagem direta para o usuário especificado.')
  .addOption({
    name: "user",
    description: "Usuário a receber a mensagem."
  })
  .addOption({
    name: "message",
    description: "Mensagem que o usuário vai receber"
  })
  .addAlias("direct")
  .setExecute(async (message, bot) => {
    const user = message.getArgument(0)
    const msg = message.getArgument(1)
    
    const user = message.mentions.users.first();
    if (!user) {
      return message.reply(`:x: | Mencione um usuário.`)
    }
    
    if (!msg) {
      return message.reply(`Forneça uma mensagem.`)
      }
      
      try {
        await user.send(msg)
        message.reply(`Mensagem enviada para ${user}`)
      } catch (e) { 
        message.reply(`Ocorreu um erro ao enviar a dm.`)
      }
   });

Certifique-se de salvar o arquivo no diretório correto, como src/commands.

Criando Slash Commands

Os slash commands são registrados automaticamente pela simpleDiscordLib. Veja um exemplo:


// src/commands/slash/dm.js
const { SlashCommand, OptionType } = require("simple-discord-lib");

module.exports = new SlashCommand()
  .setName("dm")
  .setDescription("Envie uma mensagem direta para o usuário especificado.")
  .addOption({
    name: "user",
    description: "Usuário a receber a mensagem.",
    type: OptionType.User, // Você pode usar o tipo em número, ex: 6
    required: true,
  })
  .addOption({
    name: "message",
    description: "Mensagem que o usuário vai receber.",
    type: OptionType.String, // Você pode usar o tipo em número, ex: 3
    required: true,
  })
  .setExecute(async (interaction, bot) => {
    const user = interaction.options.getUser("user");
    const msg = interaction.options.getString("message");

    if (!user) {
      return interaction.reply({ content: ":x: | Usuário não encontrado.", ephemeral: true });
    }

    if (!msg) {
      return interaction.reply({ content: "Forneça uma mensagem para enviar.", ephemeral: true });
    }

    try {
      await user.send(msg);
      await interaction.reply(`Mensagem enviada para ${user.tag}!`);
    } catch (error) {
      console.error("Erro ao enviar DM:", error);
      await interaction.reply({ content: "Ocorreu um erro ao enviar a DM.", ephemeral: true });
    }
  });

Assim que o bot for iniciado, os comandos serão registrados automaticamente.

Criando Eventos

Para adicionar eventos ao bot, crie arquivos dentro de src/events. Exemplo:


// src/events/ready.js
module.exports = {
  name: "ready",
  execute: async (bot) => {
    console.log(`Bot logado como ${bot.user.tag}`);
  },
};

Esse evento será executado quando o bot estiver pronto.

Configurando os Handlers

Certifique-se de configurar os handlers no arquivo principal do bot:


// index.js
const { Bot, EventHandler, SlashHandler, PrefixHandler } = require("simple-discord-lib");
const bot = new Bot("SEU_TOKEN_AQUI");
const path = require("path")

const pathSlash = path.join(__dirname, "src", "commands", "slash")
const pathPrefix = path.join(__dirname, "src", "commands", "prefix")
const pathEvents = path.join(__dirname, "src", "events")

const slashHandler = new SlashHandler(pathSlash, bot);
const prefixHandler = new PrefixHandler(pathPrefix, bot);
const eventHandler = new EventHandler(pathEvents, bot);

bot.connect();

Com essa configuração, o bot carregará automaticamente todos os comandos e eventos nos diretórios especificados.