Docs

Hospedar um bot do Discord

Coloque um bot feito com discord.js ou discord.py online 24/7 no Hydro, com o token como segredo.

Um bot do Discord abre uma conexão com o gateway do Discord e fica ouvindo eventos. Ele não recebe conexões, então roda como worker: um processo contínuo, sem porta pública, que o Hydro reinicia se cair.

Antes de começar

  • O token do bot, em Discord Developer Portal → Applications → seu app → Bot → Reset Token.
  • Os Privileged Gateway Intents que o bot usa ligados na mesma página (por exemplo, Message Content Intent para ler mensagens).
  • O código num repositório do GitHub ou num .zip (sem node_modules nem .venv).

1. Leia o token da variável de ambiente

Nunca deixe o token no código. Leia de DISCORD_TOKEN:

index.js (discord.js)
import { Client, Events, GatewayIntentBits } from 'discord.js';

const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (ready) => console.log(`Online como ${ready.user.tag}`));
client.login(process.env.DISCORD_TOKEN);
main.py (discord.py)
import os
import discord

client = discord.Client(intents=discord.Intents.default())

@client.event
async def on_ready():
    print(f"Online como {client.user}")

client.run(os.environ["DISCORD_TOKEN"])

2. Garanta o comando de início

  • Node.js: um script start no package.json, como "start": "node index.js". O gerenciador (npm, pnpm, yarn ou bun) vem do lockfile.
  • Python: um main.py na raiz e as dependências no requirements.txt (ou pyproject.toml com Poetry ou uv).

3. Crie o worker

Em Aplicações → Criar aplicação, escolha a origem (GitHub, .zip ou imagem Docker), o tipo Worker e a memória. Bots pequenos costumam rodar bem com 128 a 256 MB; acompanhe o consumo em Métricas e ajuste.

4. Cadastre o token e faça o deploy

Na aba Variáveis, crie DISCORD_TOKEN marcada como segredo e faça o deploy. Nos Logs, aparece a linha Online como … quando o bot conecta.

Erros comuns

SintomaCausa
Used disallowed intentsO código pede um intent privilegiado que não está ligado no Developer Portal
An invalid token was providedToken errado ou com espaço sobrando na variável. Gere outro e atualize
O bot conecta e não lê mensagensFalta o Message Content Intent, no código e no portal
A app fica crashedO processo caiu 5 vezes em 10 minutos. As últimas linhas do log mostram o erro

Dados do bot

Arquivos que o bot grava, como um banco SQLite, ficam na pasta do projeto, que continua entre deploys e entra no backup diário (detalhes). Para muitos acessos simultâneos, use um banco gerenciado.

Nesta página