Token do bot: por que nunca deve estar no código
Por que um token não deve aparecer nem no código nem no Git, e como lê-lo das variáveis de ambiente em Python e Node.js.
O token de um bot é a sua senha. Quem o possui pode entrar no lugar do bot e agir em seu nome. O hábito a manter: o token fica no ambiente do bot, nunca no código, nunca no Git, nunca em uma mensagem.
- O token é uma senha: não vai no código, no Git nem em uma mensagem.
- O código lê DISCORD_TOKEN do ambiente e informa com clareza quando o valor falta.
- Um token exposto é redefinido no portal de desenvolvedores, e o antigo deixa de funcionar.
Por que o token não vai no código
Um token escrito em bot.py ou index.js acaba em cada cópia do projeto, no histórico do Git, em capturas de tela e em backups. Basta um vazamento em qualquer desses lugares para comprometer o bot.
- Um repositório Git público expõe o token a todos, mesmo depois de apagar o arquivo: o histórico o guarda.
- Se um token vazar, redefina-o imediatamente no portal de desenvolvedores do Discord: o antigo deixa de funcionar.
- Um token colado em uma mensagem de suporte ou em um canal do Discord também fica exposto: nunca o copie para lá.
Ler o token do ambiente
Uma variável de ambiente é um valor que o sistema passa ao programa no momento da inicialização. O código a lê pelo nome, e o token fica fora do projeto.
- Python: importe os e depois token = os.environ["DISCORD_TOKEN"] e bot.run(token).
- Node.js: client.login(process.env.DISCORD_TOKEN), sem mais nada no arquivo.
- Localmente, um arquivo .env pode conter DISCORD_TOKEN=votre_token; adicione-o ao .gitignore para que nunca seja enviado ao Git.
Verificar e reagir
Um código que lê uma variável vazia deve falhar com clareza, em vez de tentar conectar com um token vazio. A mensagem de erro indica então o que falta.
- Python: if not token: raise SystemExit("DISCORD_TOKEN ausente") antes de iniciar o cliente.
- Node.js: if (!process.env.DISCORD_TOKEN) throw new Error("DISCORD_TOKEN ausente");
- Código 4004 do gateway ou LoginFailure: o token está errado ou foi redefinido. Confira a variável sem copiá-la para outro lugar.
Por que a ACLClouds mantém o token fora do repositório
O token é informado no espaço do bot no painel da ACLClouds, não no código. O campo ainda recusa um token digitado como nome de variável.
- O token é informado no painel do bot, sem ser escrito nos arquivos do projeto.
- O campo recusa um nome de variável como DISCORD_TOKEN digitado no lugar do token, para evitar erro de cópia.
- Acesso SFTP por bot na porta 2222: o código é enviado sozinho, sem segredos para colocar nele.
Perguntas frequentes
Posso colocar o token em um arquivo de configuração do projeto?
Não, nem em um arquivo que pareça inofensivo. Guarde-o no ambiente ou no painel e versione apenas um modelo .env.example sem valor.
Publiquei meu token por engano. E agora?
Redefina-o imediatamente no portal de desenvolvedores do Discord, atualize a variável no bot e reinicie-o. Apagar o arquivo não basta: o histórico do Git o mantém.
Um arquivo .env é seguro no servidor?
Ele não deve ser enviado junto com o código. No bot, prefira os valores informados no painel: um .env continua sendo uma ferramenta para testes locais.