Este guia mostra como criar uma aplicação e um bot no portal de desenvolvedores do Discord, proteger o token, convidá-lo para um servidor da comunidade e hospedá-lo 24/7 em um VPS Linux (systemd, pm2 ou Docker). Reserve 30 a 45 minutos; um VPS básico basta para um bot pequeno.
Instalação passo a passo
Ative a autenticação em dois fatores na sua conta do Discord e instale uma versão LTS atual do Node.js (ou Python).
Crie uma aplicação em discord.com/developers/applications (New Application).
Aba Bot: gere o token (Reset Token) e copie-o uma única vez para um gerenciador de senhas ou um arquivo .env.
Ative apenas os Privileged Gateway Intents que você realmente usa (Presence, Server Members, Message Content).
Gere o link de convite (scopes bot + applications.commands, permissões mínimas) com a ferramenta «Link de convite de bot».
Abra o link, escolha seu servidor (permissão «Gerenciar servidor» necessária) e autorize.
Escreva um bot mínimo (discord.js) e teste-o localmente com o token no .env.
Prepare um VPS Linux: usuário não root, firewall, Node.js (veja o guia «Preparar um VPS»).
Implante o código, guarde o token em um arquivo .env (chmod 600) e execute o bot com systemd, pm2 ou Docker.
Configure o servidor da comunidade: cargos, canais, permissões, webhooks e moderação.
Pré-requisitos
Você precisa de uma conta do Discord (com 2FA), um servidor de que seja dono ou administrador e Node.js LTS (ou Python): confira a versão mínima exigida pela versão do discord.js que instalar. Para hospedagem: um VPS Linux (1 vCPU e 512 MB a 1 GB de RAM costumam bastar para um bot pequeno; ajuste conforme seu código). Nunca compartilhe o token do bot: ele dá controle total do bot.
Criar a aplicação e o bot
- discord.com/developers/applications → New Application → nome → Create.
- General Information: copie o Application ID (o client_id público).
- Bot → Reset Token → copie o token (exibido uma única vez).
- Se o token vazar (repositório Git público, captura de tela…), faça Reset Token imediatamente.
Proteger o token (.env)
Nunca coloque o token no código. Use um arquivo .env excluído do Git e legível apenas pelo seu usuário. Exemplo (valor fictício):
echo 'DISCORD_TOKEN=ChangeMe!' > .env
chmod 600 .env
echo '.env' >> .gitignorePrivileged Intents
- Server Members Intent: eventos de entrada/saída e lista completa de membros.
- Message Content Intent: ler o texto das mensagens (desnecessário se você só usa comandos slash).
- Presence Intent: status de presença dos membros.
- Acima de certo número de servidores (100 segundo a política do Discord na data de redação), esses intents exigem verificação do bot: confira a política vigente.
Convidar o bot
O link de convite tem esta forma (client_id fictício, permissions = 3072: ver e escrever nos canais). Calcule o inteiro com a calculadora de permissões e monte o link com a ferramenta dedicada:
https://discord.com/oauth2/authorize?client_id=123456789012345678&scope=bot%20applications.commands&permissions=3072Bot mínimo (discord.js)
Instalação: npm init -y && npm install discord.js dotenv. Arquivo index.js (veja discordjs.guide para a API atualizada):
require('dotenv').config();
const { Client, Events, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => console.log(`Logged in as ${c.user.tag}`));
client.login(process.env.DISCORD_TOKEN);Hospedar com systemd
Arquivo /etc/systemd/system/discord-bot.service (adapte User e caminhos; confira o caminho do node com «which node»). Depois: sudo systemctl daemon-reload && sudo systemctl enable --now discord-bot; logs: journalctl -u discord-bot -f.
[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=botuser
WorkingDirectory=/home/botuser/bot
EnvironmentFile=/home/botuser/bot/.env
ExecStart=/usr/bin/node index.js
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetHospedar com pm2
O pm2 reinicia o processo se ele travar. O comando «pm2 startup» mostra um comando sudo a executar para o pm2 iniciar no boot.
sudo npm install -g pm2
pm2 start index.js --name discord-bot
pm2 save
pm2 startup
pm2 logs discord-botHospedar com Docker
Dockerfile abaixo (ajuste a versão do Node à exigida pelo discord.js). Construa e execute passando o token por arquivo de ambiente: docker build -t discord-bot . && docker run -d --restart unless-stopped --env-file .env --name discord-bot discord-bot
FROM node:lts-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
USER node
CMD ["node", "index.js"]Configurar o servidor da comunidade
- Cargos: crie cargos por função (admin, moderador, membro) com permissões mínimas; o cargo do bot deve ficar acima dos cargos que ele gerencia.
- Canais: categorias (boas-vindas, regras, geral, suporte, voz) e permissões por categoria em vez de por canal.
- Webhooks: para publicar o status dos seus servidores de jogo, monte o embed com a ferramenta «Criador de embeds para webhook».
- Moderação: nível de verificação, AutoMod, registro de auditoria; ative a exigência de 2FA para moderadores nas configurações do servidor.
- Visibilidade: cadastre seu servidor de jogo em game-rank.com/jeux para ser encontrado.
Solução de problemas
- «TokenInvalid» / «An invalid token was provided»: token errado, espaço sobrando ou token redefinido. Copie de novo via Reset Token.
- «Used disallowed intents»: ative o intent privilegiado correspondente na aba Bot ou remova-o do código.
- «Missing Access» / «Missing Permissions»: o bot não tem permissão nesse canal ou seu cargo está baixo demais na hierarquia.
- Os comandos slash não aparecem: faltou o scope applications.commands no convite ou os comandos não estão registrados (deploy); convide o bot novamente com o link correto.
- O bot desconecta no VPS: leia os logs (journalctl -u discord-bot -f), verifique a memória disponível e se Restart=on-failure está definido.
Perguntas frequentes
- Um bot do Discord é gratuito?
- Criar um bot no portal de desenvolvedores é gratuito. Só a hospedagem (VPS ou máquina sempre ligada) pode custar alguns euros por mês.
- O que fazer se meu token vazou?
- Clique imediatamente em Reset Token na aba Bot, atualize o .env, reinicie o bot e verifique o registro de auditoria do servidor.
- systemd, pm2 ou Docker?
- O systemd é o mais leve e integrado ao Linux; o pm2 é prático se você gerencia vários processos Node.js; o Docker isola o ambiente e torna o deploy reprodutível. Os três reiniciam o bot após uma falha.
- Preciso abrir uma porta para hospedar um bot?
- Não: o bot abre sozinho uma conexão de saída para o Discord. Apenas a porta SSH precisa ficar acessível para administração (a menos que você exponha um servidor web).
