Pular para o conteúdo principal

Estrutura de um Bot Node.js

Para o BotGate Hosting rodar seu bot Node.js perfeitamente, seu projeto precisa seguir uma estrutura simples. Veja abaixo as regras e exemplos prontos.


✅ Arquivos Obrigatórios

ArquivoObrigatórioDescrição
package.json✅ SimManifesto do projeto com script start
Arquivo de entrada✅ SimEx: index.js, bot.js, server.js
node_modules/❌ Não subaO BotGate instala automaticamente via npm install

📦 Exemplo de package.json

{
"name": "meu-bot-discord",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"discord.js": "^14.15.0",
"dotenv": "^16.0.0"
}
}
perigo
Script start obrigatório

O BotGate executa npm start para iniciar seu bot. Se esse script não existir no package.json, o deploy irá falhar com um erro claro antes mesmo de criar o container.


🤖 Exemplo de index.js (Discord.js)

const { Client, GatewayIntentBits } = require('discord.js');

const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
],
});

client.once('ready', () => {
console.log(`✅ Bot online como ${client.user.tag}`);
});

client.on('messageCreate', (message) => {
if (message.author.bot) return;
if (message.content === '!ping') {
message.reply('🏓 Pong!');
}
});

// Use sempre a variável de ambiente para o token
client.login(process.env.DISCORD_TOKEN);

📂 Estrutura do ZIP ideal

meu-bot-nodejs.zip
├── index.js ← arquivo de entrada
├── package.json ← com script "start"
├── .env ← opcional (vars serão importadas automaticamente)
└── src/
├── commands/
└── events/
Pasta comprimida?

Se o seu ZIP tiver uma pasta na raiz (ex: meu-bot/index.js), o BotGate detecta automaticamente e eleva o conteúdo para a raiz. Não precisa se preocupar com isso.


🚫 Boas Práticas (O que NÃO fazer)

  • NÃO suba node_modules/ — o BotGate apaga e reinstala automaticamente.
  • NÃO use process.exit() sem tratamento — use process.on('unhandledRejection').
  • NÃO hardcode tokens no código — use variáveis de ambiente via painel.
  • NÃO use caminhos absolutos como /home/user/bot — use path.join(__dirname, ...).

🔑 Variáveis de Ambiente

Configure o DISCORD_TOKEN e outras variáveis na aba Variáveis do painel antes de fazer o deploy:

DISCORD_TOKEN=seu_token_aqui
PREFIX=!

O BotGate injeta essas variáveis diretamente no container — não é necessário um arquivo .env (mas se seu ZIP tiver um, as variáveis serão importadas automaticamente).


📚 Bibliotecas Suportadas (exemplos)

BibliotecaVersão recomendadaUso
discord.jsv14+Bots do Discord (mais popular)
erisv0.17+Bots Discord leves
telegrafv4+Bots do Telegram
expressv4+Servidor HTTP interno
axiosqualquerRequisições HTTP

💡 Próxima etapa: Deploy do Bot