O que é suportado
- Node.js 22 ou 24, à escolha nas definições do bot: discord.js, Sapphire e qualquer módulo npm.
- npm, pnpm ou yarn conforme o teu ficheiro de bloqueio; os módulos nativos como SQLite (better-sqlite3) são compilados na instalação.
- TypeScript:
npm run buildantes do arranque, ou execução direta do ficheiro.ts. - ffmpeg e libopus para
@discordjs/voice.
package.json e ficheiro de arranque
{
"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(`Ligado como ${c.user.tag}`));
client.login(process.env.TOKEN);A Invokara usa o script start se existir; senão, o campo main; senão, index.js, main.js, bot.js, src/index.js, index.ts…
pm2, vários programas, subpastas
Não precisas do pm2: o bot já reinicia sozinho. Um script "start": "pm2 start index.js" é compreendido, e um ecosystem.config.js com várias apps (o bot e o seu site, por exemplo) arranca-as todas juntas, com registos prefixados pelo nome.
Um projeto dentro de uma subpasta do zip é detetado: os módulos são instalados e o bot arranca a partir dessa pasta.
Um dashboard Express em HTTPS
O teu bot pode servir o seu próprio site: ativa o painel web nas Definições, indica a porta e escuta em process.env.PORT. O endereço omeubot.invokara.cloud (ou o teu domínio) tem o seu certificado HTTPS, criado e renovado automaticamente.
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('O meu bot está online!'));
app.listen(process.env.PORT || 3000, '0.0.0.0');0.0.0.0, não em localhost: senão aparece a página «Este bot está offline».Os erros mais comuns
Cannot find module 'xxx' | Adiciona o módulo às dependencies do package.json e reinicia. Se já lá estiver, o teu projeto está provavelmente numa subpasta. |
Cannot use import statement outside a module | Adiciona "type": "module" ao package.json, ou usa require. |
Used disallowed intents | Ativa os intents pedidos no separador Bot do portal de programadores do Discord. |
JavaScript heap out of memory | Reduz as caches (mensagens, membros) ou passa para um plano superior. |
Perguntas frequentes
Que versão do Node.js está disponível?
Node.js 22 ou 24, à escolha nas definições do bot.
Preciso do pm2 para manter o bot online?
Não: o bot reinicia sozinho depois de uma falha. Os scripts do pm2 e os ficheiros ecosystem.config.js são compreendidos.
Quanta RAM precisa um bot discord.js?
Um bot pequeno usa normalmente 60 a 150 MB: o plano Starter (256 MB) chega para começar.
Posso fazer deploy a partir do GitHub?
Sim: liga o teu repositório e cada push volta a implementar o bot. É guardada uma versão antes de cada implementação para poderes voltar atrás.
Entra com o Discord e depois envia o teu projeto tal como está.