Qué está incluido
- Node.js 22 o 24, a elegir en los ajustes del bot: discord.js, Sapphire y cualquier módulo de npm.
- npm, pnpm o yarn según tu archivo de bloqueo; los módulos nativos como SQLite (better-sqlite3) se compilan al instalar.
- TypeScript:
npm run buildantes de arrancar, o ejecución directa del archivo.ts. - ffmpeg y libopus para
@discordjs/voice.
package.json y archivo de inicio
{
"name": "my-bot",
"main": "index.js",
"scripts": { "start": "node index.js" },
"dependencies": {
"discord.js": "^14.19.3",
"dotenv": "^16.5.0"
}
}require('dotenv').config();
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', (c) => console.log(`Conectado como ${c.user.tag}`));
client.login(process.env.TOKEN);Invokara usa el script start si existe; si no, el campo main; si no, index.js, main.js, bot.js, src/index.js, index.ts…
pm2, varios programas, subcarpetas
No necesitas pm2: el bot ya se reinicia solo. Un script "start": "pm2 start index.js" se entiende, y un ecosystem.config.js con varias apps (el bot y su web, por ejemplo) las arranca todas juntas, con logs prefijados por su nombre.
Un proyecto dentro de una subcarpeta del zip se detecta: los módulos se instalan y el bot arranca desde esa carpeta.
Un dashboard de Express en HTTPS
Tu bot puede servir su propia web: activa el panel web en Ajustes, indica el puerto y escucha en process.env.PORT. La dirección mibot.invokara.cloud (o tu dominio) tiene su certificado HTTPS, creado y renovado automáticamente.
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('¡Mi bot está en línea!'));
app.listen(process.env.PORT || 3000, '0.0.0.0');0.0.0.0, no en localhost: si no, aparece la página «Este bot está desconectado».Los errores más comunes
Cannot find module 'xxx' | Añade el módulo a las dependencies de package.json y reinicia. Si ya está, tu proyecto probablemente está en una subcarpeta. |
Cannot use import statement outside a module | Añade "type": "module" a package.json, o usa require. |
Used disallowed intents | Activa los intents pedidos en la pestaña Bot del portal de desarrolladores de Discord. |
JavaScript heap out of memory | Reduce las cachés (mensajes, miembros) o pasa a un plan superior. |
Preguntas frecuentes
¿Qué versión de Node.js está disponible?
Node.js 22 o 24, a elegir en los ajustes del bot.
¿Necesito pm2 para mantener el bot en línea?
No: el bot se reinicia solo tras un fallo. Los scripts de pm2 y los archivos ecosystem.config.js se entienden.
¿Cuánta RAM necesita un bot de discord.js?
Un bot pequeño suele usar entre 60 y 150 MB: el plan Starter (256 MB) basta para empezar.
¿Puedo desplegar desde GitHub?
Sí: vincula tu repositorio y cada push vuelve a desplegar el bot. Se guarda una versión antes de cada despliegue para poder volver atrás.
Inicia sesión con Discord y luego sube tu proyecto tal cual.