Estrutura do Bot Node.js
Para o BotGate Hosting rodar seu bot perfeitamente, precisamos que seu código siga algumas regras simples de organização. 🚀
1. O arquivo package.json (Obrigatório)
O BotGate usa o npm para gerenciar dependências e rodar seu bot. É essencial que o seu arquivo de manifesto na raiz (package.json) contenha duas coisas:
- Seção
dependencies: Listando todas as bibliotecas que seu bot usa (ex:discord.js). - Script
"start": É o comando que o BotGate usará para ligar o servidor.
📝 Exemplo de package.json:
{
"name": "meu-bot-divertido",
"version": "1.0.0",
"description": "Um bot super legal",
"main": "index.js",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"discord.js": "^14.0.0",
"dotenv": "^16.0.0"
}
}
2. O arquivo principal index.js (ou server.js)
Seu arquivo de entrada pode ter qualquer nome, desde que ele esteja apontado no script no seu package.json.
Exemplo de index.js:
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
// Ponto crucial: Use a variável de ambiente PORT (Opcional, mas recomendado para o painel)
const PORT = process.env.PORT || 3000;
client.on('ready', () => {
console.log(`🤖 Logado como ${client.user.tag}!`);
});
client.login(process.env.DISCORD_TOKEN);
3. A Variável PORT 🔌
O BotGate Hosting injeta automaticamente uma variável de ambiente chamada PORT dentro do seu container. Se o seu bot tiver um servidor HTTP (ex: Webhook, Express ou Sharding), configure-o para escutar nessa porta.
4. Boas Práticas (O que NÃO fazer!) 🚫
- NÃO suba o
node_modules: O BotGate irá deletar essa pasta e rodar umnpm installlimpo para garantir compatibilidade. Isso diminui o tamanho do seu ZIP drasticamente. 🗑️ - NOME de pastas: Evite nomes de pastas com espaços ou caracteres especiais complexos na raiz do sistema.
- DADOS PERSISTENTES: Use bancos de dados externos (como o MongoDB do MongoDB Atlas ou PostgreSQL do Supabase) ou as tabelas nativas de persistência do BotGate.
🚀 Resumo:
package.jsonna raiz com script"start".index.js(ou similar) como o ponto de entrada.- Dependências listadas formalmente.
💡 Próxima etapa: Deploy do Bot. 🦾⚡️🦾