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.