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:

  1. Node.js (recomendamos la última versión). Puedes consultar recursos en línea sobre cómo instalarlo.
  2. 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!

  1. Dirígete a la carpeta src/commands/text/ y crea un archivo llamado [nombre_del_comando].ts.
  2. 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.