Objetivos de aprendizado
Depois de ler este artigo, você vai conseguir:
- Pegar o token na aba Bot do Portal de Desenvolvedores
- Guardar o token em variável de ambiente, fora do Git
- Redefinir o token e agir rápido se ele vazar
O token é a credencial que o seu código usa para entrar no Discord como o bot. Não há usuário e senha: quem tem o token faz tudo o que o bot faz, como apagar canais, banir membros e enviar mensagens em nome dele.
Por isso o assunto tem duas metades. A primeira é achar o token. A segunda, a que importa, é não deixar que ele vá parar num repositório, num print ou numa conversa de suporte.
Onde pegar o token do bot?#
O token fica no Portal de Desenvolvedores do Discord:
- Entre no Portal e abra o seu app (ou crie um em New Application).
- No menu lateral, abra a aba Bot.
- Clique em Reset Token e confirme. O token aparece na tela.
- Copie e cole direto no lugar onde vai guardá-lo (veja a seção abaixo).
Se você fechar a página sem copiar, não há como reler o valor: redefina de novo e use o novo token.
Cada redefinição invalida os tokens antigos do bot. Isso é útil quando algo dá errado, mas também derruba qualquer processo que ainda use o valor velho.
Como o token é usado?#
Toda chamada à API REST do Discord leva o token no cabeçalho Authorization, com o prefixo Bot, segundo a referência da API. As bibliotecas (discord.js, discord.py, JDA) fazem isso por você ao receber o token no login. Para ver na prática, este comando devolve os dados do próprio bot:
curl -H "Authorization: Bot $DISCORD_TOKEN" https://discord.com/api/v10/users/@meSe o token estiver certo, a resposta traz o id e o username do bot. Se estiver errado ou redefinido, a resposta é 401: Unauthorized. Esse teste é a forma mais rápida de saber se o valor que você copiou funciona, sem subir o bot inteiro.
Como guardar o token com segurança?#
A regra é uma só: o token mora no ambiente, não no código. Em desenvolvimento, isso significa um arquivo .env que o Git ignora. Em produção, significa a variável de ambiente da hospedagem. O artigo sobre variáveis de ambiente explica a mecânica.
Crie o .env na raiz do projeto:
DISCORD_TOKEN=cole_o_token_aquiE faça o Git ignorar o arquivo antes do primeiro commit:
echo ".env" >> .gitignore
git status # o .env não pode aparecer na listaComo ler o token em Node.js?#
Nas versões recentes do Node.js, a flag --env-file carrega o .env sem pacote extra e já não é experimental, segundo a documentação do Node.js.
import { Client, Events, GatewayIntentBits } from "discord.js";
const token = process.env.DISCORD_TOKEN;
if (!token) {
console.error("Defina DISCORD_TOKEN no ambiente.");
process.exit(1);
}
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, (c) => console.log(`Online como ${c.user.tag}`));
client.login(token);node --env-file=.env index.jsComo ler o token em Python?#
Com discord.py 2.x e o pacote python-dotenv:
import os
import discord
from dotenv import load_dotenv
load_dotenv()
token = os.environ["DISCORD_TOKEN"] # KeyError claro se faltar
client = discord.Client(intents=discord.Intents.default())
@client.event
async def on_ready():
print(f"Online como {client.user}")
client.run(token)Usar os.environ["..."] em vez de os.getenv faz o programa falhar na hora, com uma mensagem clara, quando a variável não existe.
Quais erros fazem o token vazar?#
- Colar o token no código.
client.login("MTA...")funciona e parece inofensivo até o primeirogit push. - Commitar o
.env. Acontece quando o.gitignoreé criado depois do primeiro commit. O arquivo já está no histórico. - Mostrar o token em print ou log. Um
console.log(process.env)ou um print do terminal para pedir ajuda já basta. - Compartilhar o projeto em ZIP. O
.envvai junto com a pasta. - Enviar o token por mensagem. Em servidor de suporte, ninguém precisa do seu token para ajudar. Quem pedir é golpista.
O GitHub procura tokens de bot do Discord em repositórios: o padrão discord_bot_token aparece na lista de padrões de secret scanning, com push protection e alerta ao parceiro. Isso ajuda, mas não conte com ele como única defesa nem presuma que o Discord redefine o token por você.
O que fazer se o token vazou?#
Aja nesta ordem:
- Redefina o token agora. Portal, aba Bot, Reset Token. O valor vazado deixa de valer na hora.
- Atualize o novo token na hospedagem e no
.envlocal, e reinicie o bot. - Confira o servidor. Procure canais, cargos, webhooks ou convites que você não criou.
- Limpe o repositório se quiser (por exemplo com
git filter-repo), mas só depois do passo 1. Reescrever o histórico não ajuda se o valor antigo já foi copiado, e é por isso que redefinir vem primeiro.
Se o seu bot tinha permissão de Administrador, o estrago possível é maior. Dê ao bot só as permissões de que ele precisa.
Se depois da troca o bot continuar offline, veja por que o bot do Discord fica offline: um token antigo esquecido em algum ambiente é uma causa comum.
Como separar o token de teste do de produção?#
Crie dois apps no Portal: um para desenvolver e outro para o bot que fica no ar. Cada um tem o seu token. Assim, um vazamento do token de teste não derruba o bot de produção, e você testa mudanças sem mexer no bot que está no ar.
Use o mesmo nome de variável (DISCORD_TOKEN) nos dois ambientes e mude só o valor. O código não precisa saber qual é qual. Para levar o bot até a hospedagem, siga o guia de como hospedar um bot discord.js.
Como fazer isso na Square Cloud#
Na Square Cloud o token não precisa estar em arquivo nenhum do projeto. As variáveis de ambiente são configuradas por aplicação, no painel, pela API, pela CLI ou pela extensão do VS Code. O painel também importa um .env e exporta o conjunto como KEY=VALUE.
Crie a variável DISCORD_TOKEN com o valor do Portal e deixe o .env fora do ZIP ou do repositório. A mudança vale no próximo restart, sem rebuild. Se precisar trocar o token depois de um vazamento, basta editar o valor e reiniciar.
A hospedagem de bots suporta discord.js, discord.py, JDA, Discord.Net ou qualquer biblioteca de Gateway, e o reinício automático (ligado por padrão no deploy pelo painel) traz o bot de volta quando o processo encerra com erro. Você faz o deploy e a configuração. Veja os detalhes em hospedagem de bots do Discord.
Hospedagem de bots
Seu bot online 24/7, com reinício automático
Perguntas frequentes
Onde fica o token do bot do Discord?
No Portal de Desenvolvedores, em Applications, escolha o app e abra a aba Bot. O token aparece quando você clica em Reset Token e confirma.
Perdi o token. Dá para ver de novo?
Não há como reler um token antigo. Clique em Reset Token para gerar outro e atualize o valor em todo lugar onde o bot o usa.
O que acontece se eu postar o token num repositório público?
Qualquer pessoa que o copiar controla o bot. Redefina o token no Portal na hora; apagar o commit depois não basta, porque o valor antigo já pode ter sido copiado.
Preciso de um token para cada bot?
Sim. Cada app do Portal tem o seu bot e o seu token. Use um app para desenvolvimento e outro para o bot em produção.
Mais em Bots
Ver todos os 33 artigos- Quanto custa hospedar um bot do Discord?O custo de hospedar um bot do Discord depende de RAM, tempo online, banco de dados e serviços externos. Veja como estimar o seu e onde o gasto aparece.
- Rodar bot no celular (Termux) ou no PC vs hospedar: o que mudaUm bot no PC ou no celular (Termux) fica offline quando o aparelho desliga, dorme ou perde a rede. Compare as três opções e veja quando cada uma serve.
- Como deixar um bot do Discord online 24/7Para deixar um bot do Discord online 24/7, rode o processo numa máquina sempre ligada com reinício automático. Veja PC, VPS com pm2 ou systemd e hospedagem.
- Por que meu bot do Discord fica offline (e como resolver)Bot do Discord offline quase sempre é processo caído, token inválido, intent não habilitada ou falta de memória. Veja como diagnosticar cada causa e corrigir.