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
| Arquivo | Obrigatório | Descrição |
|---|---|---|
package.json | ✅ Sim | Manifesto do projeto com script start |
| Arquivo de entrada | ✅ Sim | Ex: index.js, bot.js, server.js |
node_modules/ | ❌ Não suba | O 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"
}
}
start obrigatórioO 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/
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 — useprocess.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— usepath.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)
| Biblioteca | Versão recomendada | Uso |
|---|---|---|
discord.js | v14+ | Bots do Discord (mais popular) |
eris | v0.17+ | Bots Discord leves |
telegraf | v4+ | Bots do Telegram |
express | v4+ | Servidor HTTP interno |
axios | qualquer | Requisições HTTP |
💡 Próxima etapa: Deploy do Bot