How to create a discord bot?

Crea tu propio bot de Discord: Guía completa

04/02/2019

Valoración: 4.31 (1090 votos)

Los servidores de Discord se han convertido en el corazón de innumerables comunidades de gaming, un lugar donde los jugadores se reúnen, coordinan partidas y comparten sus mejores momentos. Para gestionar y dinamizar estas comunidades, los bots son herramientas indispensables. Realizan tareas de moderación, reproducen música, anuncian eventos y mucho más. ¿Alguna vez has pensado en crear el tuyo? Puede sonar como una tarea para expertos en programación, pero con la guía adecuada, es más accesible de lo que crees. En este artículo, te llevaremos de la mano en el proceso de creación de tu primer bot de Discord, desde la configuración inicial hasta la programación de funcionalidades específicas y útiles, como la gestión de imágenes enviadas por los usuarios. Prepárate para darle a tu servidor un toque único y personal.

How to create a discord bot?
Here we learn how we can get the following responses from the bot: Step 1: Create an account on discord by visiting the website, and also create a server and a channel. Step 2: Now go to the discord development website. Give the name to your bot and then click on create. Step 3: Go to the “Bot” tab and then click “Add Bot”.
Índice de Contenido

¿Qué Necesitas para Empezar?

Antes de sumergirnos en el código, debemos asegurarnos de tener todas las herramientas necesarias. La preparación es clave para un proceso fluido y sin frustraciones. Aquí tienes la lista de requisitos indispensables:

  • Una cuenta de Discord: Esto es obvio, pero necesario. Necesitarás una cuenta para acceder al portal de desarrolladores y para tener un servidor donde probar tu bot.
  • Node.js: Los bots de Discord se pueden programar en varios lenguajes, pero en esta guía nos centraremos en JavaScript, que se ejecuta sobre Node.js. Es uno de los entornos más populares y con mayor soporte para la creación de bots. Puedes descargarlo gratuitamente desde su página web oficial. Te recomendamos instalar la versión LTS (Long Term Support) por su estabilidad.
  • Un editor de código: Necesitarás un lugar donde escribir tu código. Herramientas como Visual Studio Code, Sublime Text o Atom son excelentes opciones gratuitas. VS Code es especialmente popular por su gran cantidad de extensiones que facilitan el desarrollo.
  • Conocimientos básicos de JavaScript: No necesitas ser un experto, pero entender los fundamentos de JavaScript (variables, funciones, bucles, condicionales y objetos) hará que el proceso sea mucho más comprensible.

Paso 1: Creando tu Aplicación en el Portal de Desarrolladores

El primer paso oficial es registrar tu bot en la plataforma de Discord. Esto se hace a través de su Portal de Desarrolladores.

  1. Ve al Portal de Desarrolladores de Discord e inicia sesión con tu cuenta.
  2. Una vez dentro, haz clic en el botón "New Application" en la esquina superior derecha.
  3. Dale un nombre a tu aplicación. Este será el nombre que aparecerá públicamente en un principio, ¡así que elige algo representativo! Acepta los términos de servicio y continúa.
  4. Serás redirigido al panel de control de tu nueva aplicación. En el menú de la izquierda, selecciona la pestaña "Bot".
  5. Haz clic en el botón "Add Bot". Confirma la acción en la ventana emergente. ¡Felicidades, acabas de crear la entidad de bot para tu aplicación!
  6. En esta misma pantalla verás el nombre de usuario de tu bot y un botón llamado "Reset Token". Este token es, en esencia, la contraseña de tu bot. Es una cadena de caracteres extremadamente importante y confidencial. Nunca compartas tu token con nadie. Cualquiera que lo tenga puede tomar control total de tu bot. Haremos clic en "Reset Token" para generar y ver nuestro token por primera vez. Cópialo y guárdalo en un lugar seguro; lo necesitaremos en breve.
  7. Finalmente, en esta misma página, desplázate hacia abajo hasta la sección "Privileged Gateway Intents". Necesitamos habilitar algunos permisos para que nuestro bot pueda recibir ciertos tipos de información. Por ahora, activa "MESSAGE CONTENT INTENT". Esto es crucial para que el bot pueda leer el contenido de los mensajes que no son menciones directas o comandos.

Paso 2: Invitando tu Bot a un Servidor

Ahora que tu bot existe, necesita un hogar. Vamos a invitarlo a un servidor de Discord que tú controles.

  1. En el menú de la izquierda del portal, ve a "OAuth2" y luego a la sub-pestaña "URL Generator".
  2. En la sección "SCOPES", selecciona la casilla `bot` y `applications.commands`.
  3. Al seleccionar `bot`, aparecerá una nueva sección más abajo llamada "BOT PERMISSIONS". Aquí seleccionas los permisos que tu bot tendrá en los servidores a los que se una. Para empezar, puedes otorgarle permisos de `Administrator` para evitar problemas durante las pruebas, pero en un bot de producción, siempre es mejor otorgar solo los permisos estrictamente necesarios. Para esta guía, selecciona `Send Messages`, `Read Message History` y `Attach Files`.
  4. Una vez seleccionados los scopes y permisos, se generará una URL en la parte inferior de la página. Copia esta URL.
  5. Pega la URL en una nueva pestaña de tu navegador. Se abrirá una ventana de autorización de Discord. Selecciona el servidor al que quieres añadir el bot y haz clic en "Autorizar". Completa el captcha si es necesario.

Si todo ha ido bien, verás un mensaje de confirmación y, al revisar tu servidor de Discord, encontrarás a tu bot en la lista de miembros, aunque aparecerá como desconectado. ¡Vamos a solucionar eso!

Paso 3: Configurando tu Entorno de Desarrollo

Es hora de preparar nuestro espacio de trabajo local para empezar a programar.

  1. Crea una nueva carpeta en tu ordenador para el proyecto. Por ejemplo, `mi-bot-discord`.
  2. Abre tu terminal o línea de comandos, navega hasta esa carpeta recién creada.
  3. Una vez dentro de la carpeta, ejecuta el comando `npm init -y`. Esto creará un archivo `package.json` que gestionará las dependencias de nuestro proyecto.
  4. Ahora, instalaremos la librería más importante: `discord.js`. Es un módulo de Node.js que nos permite interactuar con la API de Discord de una manera muy sencilla. Ejecuta el siguiente comando: `npm install discord.js`
  5. Crea un nuevo archivo dentro de la carpeta del proyecto y llámalo `index.js`. Este será el archivo principal donde vivirá el código de nuestro bot.

Paso 4: El Código Fundamental para Conectar tu Bot

Vamos a escribir el código mínimo necesario para que nuestro bot se conecte a Discord y aparezca en línea.

Abre tu archivo `index.js` y escribe el siguiente código:

// Requerimos las clases necesarias de la librería discord.js const { Client, GatewayIntentBits } = require('discord.js'); // Creamos una nueva instancia del cliente const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); // Guardamos el token de forma segura (idealmente en un archivo de configuración o variable de entorno) const TOKEN = 'AQUÍ_VA_TU_TOKEN_SECRETO'; // Evento que se dispara cuando el bot está listo y conectado client.on('ready', () => { console.log(`¡Conectado como ${client.user.tag}!`); }); // Evento que se dispara cada vez que se crea un mensaje client.on('messageCreate', message => { // Evitamos que el bot se responda a sí mismo if (message.author.bot) return; // Un comando simple de prueba if (message.content === '!ping') { message.reply('¡Pong!'); } }); // Iniciamos sesión en Discord con el token de nuestro cliente client.login(TOKEN);

Reemplaza `'AQUÍ_VA_TU_TOKEN_SECRETO'` con el token que copiaste anteriormente. Ahora, vuelve a tu terminal (asegurándote de que estás en la carpeta del proyecto) y ejecuta el comando: `node index.js`

Si todo está correcto, verás el mensaje `¡Conectado como NombreDeTuBot#1234!` en tu terminal. Y si vas a tu servidor de Discord, ¡verás que tu bot ahora está en línea! Prueba a escribir `!ping` en un canal y el bot debería responderte `¡Pong!`.

Ejemplo Avanzado: Gestionando Imágenes Enviadas por Usuarios

Ahora que tenemos un bot funcional, vamos a implementar una característica más compleja, directamente relacionada con la interacción del usuario. Imaginemos que queremos que nuestro bot detecte cuándo un usuario sube una imagen y la guarde, pero ignorando las imágenes que el propio bot pueda enviar.

El desafío aquí es diferenciar entre un archivo subido por un usuario y un archivo enviado por el bot. La clave está en el identificador del autor del mensaje. Cada usuario, y cada bot, tiene un ID único. Podemos usar esto para filtrar los mensajes.

Modificaremos nuestro evento `messageCreate` para manejar los archivos adjuntos. Aquí está el código de ejemplo, que puedes añadir a tu archivo `index.js`:

// ... (código anterior) ... // Importamos el módulo 'fs' para interactuar con el sistema de archivos y 'https' para descargas const fs = require('fs'); const https = require('https'); // Evento que se dispara cada vez que se crea un mensaje client.on('messageCreate', message => { // Primero, nos aseguramos de que el mensaje no provenga de un bot. // Usamos el ID del autor para la comprobación más fiable. // El ID de nuestro bot se encuentra en client.user.id if (message.author.id === client.user.id) { console.log('Mensaje ignorado porque es de nuestro propio bot.'); return; // Detenemos la ejecución para este mensaje } // Comprobamos si el mensaje tiene archivos adjuntos if (message.attachments.size > 0) { console.log(`Se detectaron ${message.attachments.size} archivos adjuntos del usuario ${message.author.tag}.`); // Iteramos sobre cada archivo adjunto en el mensaje message.attachments.forEach(attachment => { // Obtenemos la URL del archivo adjunto const fileUrl = attachment.url; console.log(`Procesando archivo: ${fileUrl}`); // Verificamos si es una imagen (opcional, pero recomendado) if (attachment.contentType && attachment.contentType.startsWith('image/')) { // Creamos un nombre de archivo único, por ejemplo, usando la fecha y el nombre original const fileName = `${Date.now()}_${attachment.name}`; const filePath = `./uploads/${fileName}`; // Creamos la carpeta 'uploads' si no existe if (!fs.existsSync('./uploads')) { fs.mkdirSync('./uploads'); } // Descargamos y guardamos la imagen const file = fs.createWriteStream(filePath); https.get(fileUrl, (response) => { response.pipe(file); file.on('finish', () => { file.close(); console.log(`Imagen '${fileName}' guardada correctamente.`); message.channel.send(`He guardado tu imagen, ${message.author.username}!`); }); }).on('error', (err) => { fs.unlink(filePath, () => {}); // Eliminar el archivo si hay un error console.error(`Error al descargar la imagen: ${err.message}`); }); } else { console.log('El archivo adjunto no es una imagen, se ignora.'); } }); } }); // ... (código de login) ...

En este código, la lógica clave es la condición `if (message.author.id === client.user.id)`. Compara el ID del autor del mensaje (`message.author.id`) con el ID de nuestro bot (`client.user.id`). Si coinciden, significa que el bot acaba de enviar el mensaje, así que usamos `return` para detener el procesamiento y evitar un bucle infinito donde el bot se responde a sí mismo. Si el autor es cualquier otro usuario, el código continúa, revisa si hay archivos adjuntos, y si los encuentra, los procesa para guardarlos en una carpeta local llamada `uploads`.

Tabla Comparativa: Librerías Populares para Bots de Discord

Aunque hemos usado JavaScript, no es la única opción. Aquí tienes una comparativa de las librerías más populares:

LibreríaLenguajeVentajasIdeal para...
discord.jsJavaScriptComunidad enorme, muy flexible, gran cantidad de tutoriales y recursos.Principiantes y expertos. Proyectos de cualquier tamaño.
discord.pyPythonSintaxis más limpia y sencilla, excelente para principiantes en programación.Bots con enfoque en scripting, automatización y aquellos que se integran con otras herramientas de Python.
JDA (Java Discord API)JavaRendimiento robusto, fuertemente tipado, ideal para aplicaciones a gran escala.Desarrolladores de Java experimentados y bots que requieren un alto rendimiento y escalabilidad.

Preguntas Frecuentes (FAQ)

¿Mi bot necesita estar siempre en línea en mi ordenador?

Para que tu bot esté disponible 24/7, el script que lo ejecuta debe estar corriendo constantemente. Hacerlo en tu ordenador personal no es práctico. La solución es alojar (hostear) tu bot en un servidor. Existen opciones gratuitas como Replit o Heroku (con ciertas limitaciones) y opciones de pago más robustas como los Servidores Virtuales Privados (VPS) que te dan control total.

¿Cómo mantengo mi token seguro en un proyecto público?

Nunca debes subir tu token a repositorios públicos como GitHub. La mejor práctica es usar variables de entorno. Crea un archivo llamado `.env` en la raíz de tu proyecto, añade una línea como `DISCORD_TOKEN=tu_token_aqui`, y asegúrate de que el archivo `.env` esté en tu `.gitignore`. Luego, puedes usar un paquete como `dotenv` (`npm install dotenv`) para cargar esa variable en tu código de forma segura.

¿Qué son los 'Intents' y por qué son importantes?

Los 'Gateway Intents' son un sistema que implementó Discord para que los desarrolladores especifiquen qué tipos de eventos quieren recibir. Esto se hizo para mejorar la eficiencia y la privacidad. Si tu bot no se suscribe a un 'intent' como `MessageContent`, simplemente no recibirá la información relacionada (en este caso, el contenido de los mensajes), y esa parte de tu código no funcionará.

¿Puedo hacer un bot sin saber programar?

Sí, existen plataformas de creación de bots sin código (no-code) o de bajo código (low-code) que te permiten ensamblar un bot usando una interfaz gráfica. Sin embargo, estas plataformas siempre tendrán limitaciones. Aprender a programar tu propio bot te da una flexibilidad y un poder de personalización ilimitados.

Crear un bot de Discord es un viaje emocionante que te abre un mundo de posibilidades para tu comunidad. Lo que hemos visto aquí es solo la punta del iceberg. Te animamos a experimentar, a explorar la extensa documentación de discord.js y a pensar en nuevas y creativas formas de hacer que tu servidor sea un lugar más divertido e interactivo. ¡Feliz codificación!

Si quieres conocer otros artículos parecidos a Crea tu propio bot de Discord: Guía completa puedes visitar la categoría Guías.

Subir