Como hospedar um bot

Discord, Telegram e WhatsApp: o que muda em cada um e o erro que derruba quase todo bot novo.

Iniciante·6 min de leitura

Um bot é uma aplicação que roda em segundo plano e não recebe acessos por um endereço. Ele se conecta sozinho ao serviço (Discord, Telegram, WhatsApp) e fica escutando.

O erro que derruba quase todo bot novo

O token não pode estar escrito no código. Além de ser um risco de segurança, qualquer atualização do projeto sobrescreve o arquivo. Guarde o token em Variáveis de Ambiente e leia com process.env no código.

Discord

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

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

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

// O token vem das Variáveis de Ambiente, nunca do código.
client.login(process.env.DISCORD_TOKEN);

No portal do Discord, ative os Privileged Gateway Intents que o seu bot usa (Message Content, Server Members). Sem eles o bot conecta mas não recebe eventos — e o log fica silencioso, o que confunde muita gente.

Telegram

Bots de Telegram funcionam em dois modos. Em *polling*, o bot pergunta ao Telegram se há mensagens novas — é o modo mais simples e funciona sem configurar nada. Em *webhook*, o Telegram avisa o seu servidor; nesse caso a aplicação precisa ser do tipo Site, ter um endereço público e escutar na porta 80.

WhatsApp

Bibliotecas que abrem um navegador (whatsapp-web.js, Venom, Puppeteer) funcionam: o navegador já vem instalado no ambiente. Duas exigências práticas:

  • Suba o navegador com o argumento `--no-sandbox` — sem ele o processo não inicia dentro de container.
  • Reserve 512 MB ou mais de memória. Um navegador headless sozinho já consome perto de 300 MB.
  • O QR Code aparece no console da aplicação, na aba Logs. Escaneie a partir dali.
javascript
const client = new Client({
  authStrategy: new LocalAuth(),
  puppeteer: {
    args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"],
  },
});

Bibliotecas sem navegador consomem muito menos

Para WhatsApp, bibliotecas que falam direto com o protocolo (como Baileys) rodam confortavelmente em 256 MB, contra os 512 MB ou mais de uma solução com navegador.

Continue lendo