Cómo crear un bot de Discord desde cero
Si alguna vez has querido crear un bot para Discord y no sabes por dónde empezar, este post es para ti. A través de este tutorial, aprenderás a construir un bot de Discord utilizando mi template disponible en GitHub, el cual está configurado para trabajar con TypeScript. Este enfoque no solo te permitirá tener un bot funcional rápidamente, sino que también aprovecharás las ventajas de TypeScript como tipado estático, autocompletado y una mejor experiencia de desarrollo. ¡Vamos a comenzar!
📂 Estructura del Proyecto
Antes de comenzar, asegúrate de que tu proyecto tenga la siguiente estructura:
src/
├── commands/
│ ├── text/
│ ├── slash/
└── index.ts
Esta estructura te ayudará a organizar los comandos y la configuración de tu bot. A continuación, te guiaré para que empieces a crear tu propio bot.
⚙️ Instalación
📝 Paso 1: Requisitos previos
Antes de comenzar, asegúrate de tener instalados los siguientes programas:
- Node.js (recomendamos la última versión). Puedes consultar recursos en línea sobre cómo instalarlo.
- Git para clonar el repositorio.
💻 Paso 2: Clonar el repositorio
Una vez tengas todo lo necesario, clona el repositorio del bot template en tu máquina local:
git clone git@github.com:HormigaDev/bot-template.git
🛠️ Paso 3: Navegar al directorio del proyecto
Entra al directorio de tu nuevo proyecto:
cd bot-template
📦 Paso 4: Instalar las dependencias
Ahora es el momento de instalar las dependencias del proyecto:
npm install
🔑 Paso 5: Configurar las variables de entorno
Copia el archivo .env.template
a .env
, donde podrás definir las variables de entorno necesarias para que el bot funcione. Si prefieres utilizar las variables de entorno del sistema, puedes omitir este paso.
🧰 Creando tu Primer Comando
Con el bot instalado y listo para funcionar, ¡ya puedes empezar a crear comandos!
- Dirígete a la carpeta
src/commands/text/
y crea un archivo llamado[nombre_del_comando].ts
. - Abre el archivo y escribe la lógica de tu comando siguiendo el formato básico de la plantilla.
Ejemplo de estructura de un comando:
import { Message } from "discord.js";
import { Bot } from "@/bot";
import { TextCommand } from "@/types/TextCommand";
export const cmd: TextCommand = {
name: "[nombre_del_comando]",
alias: ["[alias1]", "[alias2]"],
description: "[Descripción breve del comando]",
category: "[Categoría]",
async execute(bot: Bot, message: Message, args: string[]) {
// Implementación del comando
},
};
🚀 Ejemplo de Comando
Aquí te dejamos un ejemplo de cómo podrías crear un comando !ping
que responda con la latencia del bot:
import { EmbedBuilder, Colors, Message } from "discord.js";
import { Bot } from "@/bot";
import { TextCommand } from "@/types/TextCommand";
export const cmd: TextCommand = {
name: "ping",
alias: ["latencia"],
description: "Muestra la latencia del bot y de la API de Discord",
category: "information",
async execute(bot: Bot, message: Message, args: string[]) {
const sentMessage = await message.reply("Calculando ping...");
const botLatency =
sentMessage.createdTimestamp - message.createdTimestamp;
const apiLatency = bot.client.ws.ping;
const embed = new EmbedBuilder()
.setTitle("🏓 Pong!")
.setColor(Colors.Green)
.addFields(
{
name: "Latencia del bot",
value: `\`${botLatency}ms\``,
inline: true,
},
{
name: "Latencia de la API",
value: `\`${
apiLatency === -1 ? "No medido" : apiLatency + "ms"
}\``,
inline: true,
}
);
await sentMessage.edit({ content: "", embeds: [embed] });
},
};
🎯 Conclusión
¡Y eso es todo! Ahora tienes tu bot de Discord funcionando y la capacidad de agregar comandos personalizados.
¿Tienes alguna duda o problema? Únete a nuestra Comunidad de Discord y te ayudaremos con lo que necesites.
Puedes seguir este mismo patrón para agregar más comandos o funcionalidades a tu bot. Si tienes alguna pregunta o si no encuentras el comando que deseas, ¡no dudes en preguntar en nuestra comunidad!
📚 Recursos Adicionales
- Documentación completa del bot template en el Repositorio de GitHub.
- Más tutoriales sobre creación de comandos y bots personalizados en este blog.