ACLClouds
ACLClouds

Token del bot: perché non deve mai stare nel codice

Perché un token non deve comparire né nel codice né in Git, e come leggerlo dalle variabili d’ambiente in Python e Node.js.

Il token di un bot è la sua password. Chi lo possiede può accedere al posto del bot e agire in suo nome. L’abitudine da mantenere: il token vive nell’ambiente del bot, mai nel codice, mai in Git, mai in un messaggio.

  • Il token è una password: non va nel codice, in Git né in un messaggio.
  • Il codice legge DISCORD_TOKEN dall’ambiente e segnala con chiarezza un valore mancante.
  • Un token esposto si reimposta nel portale per sviluppatori, e quello vecchio smette di funzionare.

Perché il token non va nel codice

Un token scritto in bot.py o index.js finisce in ogni copia del progetto, nella cronologia Git, negli screenshot e nei backup. Basta una sola fuga in uno di questi punti per compromettere il bot.

  • Un repository Git pubblico espone il token a tutti, anche dopo aver cancellato il file: la cronologia lo conserva.
  • Se un token trapela, reimpostatelo subito nel portale per sviluppatori di Discord: quello vecchio smette di funzionare.
  • Un token incollato in un messaggio di supporto o in un canale Discord è esposto anch’esso: non copiatelo mai lì.

Leggere il token dall’ambiente

Una variabile d’ambiente è un valore che il sistema passa al programma all’avvio. Il codice la legge per nome e il token resta fuori dal progetto.

  • Python: importate os, poi token = os.environ["DISCORD_TOKEN"] e bot.run(token).
  • Node.js: client.login(process.env.DISCORD_TOKEN), senza altro nel file.
  • In locale, un file .env può contenere DISCORD_TOKEN=votre_token; aggiungetelo a .gitignore perché non venga mai committato.

Verificare e reagire

Un codice che legge una variabile vuota deve fallire in modo chiaro, invece di tentare la connessione con un token vuoto. Il messaggio di errore indica cosa manca.

  • Python: if not token: raise SystemExit("DISCORD_TOKEN mancante") prima di avviare il client.
  • Node.js: if (!process.env.DISCORD_TOKEN) throw new Error("DISCORD_TOKEN mancante");
  • Codice 4004 del gateway o LoginFailure: il token è sbagliato o è stato reimpostato. Controllate la variabile senza ricopiarla altrove.

Perché ACLClouds tiene il token fuori dal repository

Il token si inserisce nello spazio del bot nella dashboard ACLClouds, non nel codice. Il campo, inoltre, rifiuta un token digitato come nome di variabile.

  • Il token si inserisce nella dashboard del bot, senza essere scritto nei file del progetto.
  • Il campo rifiuta un nome di variabile come DISCORD_TOKEN digitato al posto del token, per evitare un errore di copia.
  • Accesso SFTP per bot sulla porta 2222: il codice si carica da solo, senza segreti da inserirvi.

Domande frequenti

Posso mettere il token in un file di configurazione del progetto?

No, nemmeno in un file che sembra innocuo. Tenetelo nell’ambiente o nella dashboard e versionate solo un modello .env.example senza valore.

Ho pubblicato il token per errore. Cosa faccio?

Reimpostatelo subito nel portale per sviluppatori di Discord, aggiornate la variabile sul bot e riavviatelo. Cancellare il file non basta: la cronologia Git lo conserva.

Un file .env è sicuro sul server?

Non va caricato insieme al codice. Sul bot preferite i valori inseriti nella dashboard: un .env resta uno strumento per i test in locale.