# Desplegar un bot de Discord.js

> Guía paso a paso para desplegar un bot de Discord.js (Node.js) en Daki Hosting.

Esta guía te acompaña en el despliegue de un bot de Discord.js en Daki Hosting: desde la creación de tu servidor hasta tener tu bot en línea y leer su token de forma segura.

## Lo que aprenderás

- Cómo crear un servidor de Node.js para tu bot
- Cómo subir tu código
- Cómo configurar el comando de instalación, el comando de inicio y la imagen de Docker
- Cómo guardar el token de tu bot de forma segura con un archivo `.env`
- Cómo iniciar tu bot y comprobar que funciona

---

## Requisitos previos

- Una cuenta de Daki (Free Tier o de pago): consulta [Crear una cuenta](https://daki.cc/es/wiki/guides/account-create)
- Un bot de Discord con un **bot token**, creado en el [Discord Developer Portal](https://discord.com/developers/applications)
- El código fuente de tu bot, incluido un `package.json` con `discord.js` y `dotenv` como dependencias

> **Info:** Los bots de Discord se conectan **de forma saliente** a los servidores de Discord y no necesitan un puerto de entrada. Esto significa que los bots de Discord funcionan tanto en el Free Tier como en los planes de pago. Si tu bot también atiende peticiones HTTP (por ejemplo, para interacciones de comandos slash o webhooks), necesitarás un plan de pago, ya que los puertos públicos solo están disponibles en los planes de pago. Consulta [Red y asignaciones](https://daki.cc/es/wiki/guides/network-allocations).

---

## Despliegue

**Paso 1: Crea un servidor de Node.js**

1. Inicia sesión en el Free Tier Dashboard en [free.daki.cc](https://free.daki.cc) o en el Billing Panel en [billing.daki.cc](https://billing.daki.cc).
2. Crea un servidor nuevo y selecciona el egg de **Node.js**.
3. Ponle un nombre a tu servidor (por ejemplo, `MyDiscordBot`).

Consulta [Crea tu primer servidor](https://daki.cc/es/wiki/guides/create-server) para ver la guía completa.

**Paso 2: Accede al Portal**

Inicia sesión en el Portal mediante SSO (**Open Portal** en la página Account del dashboard o en la página de tu servicio del Billing Panel), o directamente en [portal.daki.cc](https://portal.daki.cc). Consulta [Resumen del Portal](https://daki.cc/es/wiki/guides/portal).

**Paso 3: Sube el código de tu bot**

**Opción A: subirlo como ZIP (lo más sencillo):**
1. Comprime la carpeta de tu proyecto en un archivo `.zip` en tu equipo.
2. En el Portal, ve a la pestaña **Files** y haz clic en **Upload**.
3. Haz clic derecho en el `.zip` y pulsa **Extract**.

**Opción B: usar SFTP (sin límite de tamaño):**
Conéctate con tus credenciales de SFTP desde la pestaña **Settings** y sube tu carpeta directamente. Consulta [Gestor de archivos](https://daki.cc/es/wiki/guides/file-manager).

> **Info:** **No** incluyas la carpeta `node_modules` en la subida: el comando de instalación la creará automáticamente. Sí incluye tu `package.json` y tu `package-lock.json`.

**Paso 4: Configura la pestaña Startup**

Abre la pestaña **Startup** y configura los tres campos:

**1. Docker Image** — Selecciona la versión de Node.js que necesite tu bot (por ejemplo, **Node.js 22** o **Node.js 24**). Node.js 24 LTS es una opción segura por defecto si no lo tienes claro. Evita las versiones marcadas como **EOL**, porque ya no reciben actualizaciones de seguridad.

**2. Install Command** — Indícalo para instalar tus dependencias automáticamente:
```
npm install
```
**3. Startup Command** — Indica el comando que lanza tu bot:
- `node index.js` — si tu archivo de entrada es `index.js`
- `node bot.js` — si tu archivo de entrada es `bot.js`
- `npm start` — si tienes un script `start` en `package.json`

Puedes ajustar estos comandos para que coincidan con la estructura de tu proyecto.

Consulta [Configuración de inicio](https://daki.cc/es/wiki/guides/startup-settings) para ver la explicación completa.

**Paso 5: Añade el token de tu bot mediante un archivo .env**

Tu bot necesita su token de Discord para conectarse. Guárdalo en un archivo `.env` en el servidor para que nunca acabe en tu código fuente.

1. En la pestaña **Files**, haz clic en **New File** y ponle el nombre `.env`.
2. Añade tu token:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Haz clic en **Save**.

En el código de tu bot, cárgalo con `dotenv`:
```js
require('dotenv').config();

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}`);
});

client.login(process.env.BOT_TOKEN);
```
Asegúrate de que `dotenv` aparece en las dependencias de tu `package.json`, para que el comando de instalación lo instale.

Consulta [Variables de entorno](https://daki.cc/es/wiki/guides/environment-variables) para más detalles sobre el uso de archivos `.env`.

**Paso 6: Inicia tu bot**

Haz clic en **Start** en la pestaña **Console**. Un lanzamiento correcto mostrará la confirmación de inicio de sesión de tu bot:

```

Logged in as MyBot#1234!

```
Si ves errores, consulta la guía de [Solución de problemas](https://daki.cc/es/wiki/guides/troubleshooting).

---

## Problemas comunes

**Error: Cannot find module 'discord.js'**

Tus dependencias no se han instalado. Comprueba que tu `package.json` incluye `discord.js` como dependencia y que el **Install Command** está definido como `npm install` en la pestaña Startup. Reinicia el servidor para lanzar la instalación.

**Error: Cannot find module 'dotenv'**

Añade `dotenv` a las dependencias de tu `package.json` y reinicia el servidor para reinstalarlas.

**Error: An invalid token was provided**

El token de tu bot en el archivo `.env` es incorrecto o falta. Ve a la pestaña Files, abre `.env` y revisa el valor. Asegúrate de que no hay espacios, comillas ni saltos de línea adicionales.

**El bot se inicia pero se desconecta poco después**

Suele deberse a Gateway Intents que faltan. En el Discord Developer Portal, activa los intents privilegiados necesarios (por ejemplo, Message Content Intent) para tu aplicación de bot, y asegúrate de que tu código los solicita.

**El servidor se cae inmediatamente al iniciarse**

Abre la pestaña Console y lee el error. Causas habituales: un comando de inicio incorrecto (error tipográfico en el nombre del archivo), una versión de Node.js equivocada o falta `node_modules`. Consulta [Solución de problemas](https://daki.cc/es/wiki/guides/troubleshooting).

---

## Próximos pasos

- [Variables de entorno](https://daki.cc/es/wiki/guides/environment-variables): guía completa sobre archivos `.env` y lectura de variables en el código.
- [Renovar tu servidor gratuito](https://daki.cc/es/wiki/guides/save-free-server-from-purge): mira anuncios para mantener activo tu servidor del Free Tier.
- [Gestor de archivos](https://daki.cc/es/wiki/guides/file-manager): actualiza los archivos de código después de hacer cambios.

---
Source: https://daki.cc/es/wiki/guides/deploy-discordjs
