Skip to main content
Gli errori dei bot Discord su Square Cloud di solito derivano dal token, dagli intent del gateway o da un’incompatibilità di versione con Lavalink. Trova la corrispondenza con il messaggio esatto qui sotto.

”LoginFailure: Improper token has been passed” / TokenInvalid

Cosa significa: Discord ha rifiutato il token con cui il tuo bot effettua il login. Il messaggio esatto dipende dalla libreria:
  • discord.py: discord.errors.LoginFailure: Improper token has been passed.
  • discord.js v14: Error [TokenInvalid]: An invalid token was provided.
  • discord.js meno recente: Error [TOKEN_INVALID]: An invalid token was provided.
  • altre librerie: un HTTP 401 Unauthorized al login.
Perché accade:
  • Il token è stato rigenerato o revocato nel Discord Developer Portal. Generare un nuovo token invalida istantaneamente quello vecchio ovunque venga usato.
  • La stringa del token ha spazi o virgolette extra copiati per errore.
  • Il codice sta leggendo la variabile d’ambiente sbagliata, oppure la variabile non è impostata su Square Cloud.
Come risolvere:
  1. Vai al Developer Portal → la tua applicazione → Bot → Reset Token.
  2. Aggiorna il token nelle variabili d’ambiente dell’applicazione (nella dashboard Impostazioni → Variabili d’ambiente, oppure con squarecloud app env set). Non fare mai commit del token in un file che viene caricato nello zip.
  3. Controlla che non ci siano spazi o virgolette estranei intorno al valore.
  4. Aggiorna la libreria (discord.js@latest oppure pip install -U discord.py).
  5. Riavvia l’applicazione, così carica il nuovo valore.
Non inserire mai il token del tuo bot direttamente nei file sorgente. Leggilo sempre da una variabile d’ambiente impostata nella dashboard.

”Used disallowed intents” / Message Content Intent

Cosa significa: il bot effettua il login e appare online, ma ignora ogni messaggio, oppure il gateway rifiuta la connessione con “used disallowed intents”. Perché accade: dal 2022, Message Content è un intent privilegiato. Senza averlo abilitato esplicitamente in entrambi i punti, il contenuto dei messaggi arriva vuoto (oppure la connessione al gateway viene rifiutata se il tuo codice dichiara un intent non abilitato per l’app). Come risolvere, in entrambi i punti:
  1. Discord Developer Portal → la tua applicazione → Bot → Privileged Gateway Intents → abilita Message Content Intent.
  2. Dichiaralo anche nel codice:
  1. Riavvia l’applicazione.
Una volta che un bot supera i 100 server, gli intent privilegiati (incluso Message Content) richiedono anche l’approvazione di Discord, richiedibile dalla stessa pagina del Developer Portal.
Cosa significa: il client Lavalink del bot chiude il WebSocket in modo anomalo con codice 1006, spesso preceduto da “Unexpected server response: 400”. Perché accade: si tratta di un’incompatibilità di versione. Lavalink v4 è basato su REST ed è incompatibile con un wrapper client costruito per v3, quindi l’handshake fallisce e il socket si chiude con 1006. Come risolvere:
  1. Allinea la versione del wrapper client Lavalink del tuo bot con la versione principale del server Lavalink (client v3 con server v3, client v4 con server v4).
  2. Su Square Cloud, il server Lavalink stesso è collegato alla porta 80, ma il tuo bot deve connettersi tramite l’edge sulla porta 443 con secure: true.
  3. Riavvia sia l’applicazione Lavalink che l’applicazione del bot dopo aver risolto l’incompatibilità di versione.
Per la configurazione completa dell’hosting di Lavalink (file di configurazione, porta, deploy), consulta il tutorial sul server Lavalink.

Il bot va offline dopo aver funzionato in locale

Cosa significa: il bot effettua il login correttamente quando lo esegui sulla tua macchina, ma va offline (o si riavvia ripetutamente) una volta effettuato il deploy. Perché accade, più comunemente:
  • Una connessione instabile a livello di gateway senza gestione della riconnessione.
  • Versioni delle dipendenze in conflitto o incompatibili tra quello che hai testato in locale e quello che è nel tuo file delle dipendenze.
  • Il bot è stato arrestato per aver superato la RAM o la CPU, oppure per aver inondato l’API di Discord di richieste. In questo caso i log mostrano una riga [SQUARE-SHIELD] e ricevi un’email: vedi la tabella degli stati.
Come risolvere:
  1. Controlla prima i log dell’applicazione nella dashboard, mostrano il motivo reale del crash.
  2. Aggiungi error handler in modo che un errore transitorio non faccia crashare il processo: process.on("unhandledRejection", ...) e client.on("error", ...) in discord.js, gestione equivalente in discord.py.
  3. Aggiungi AUTORESTART=true al tuo squarecloud.app perché Square Cloud riavvii il bot dopo un crash. È disattivato per impostazione predefinita e riavvia solo nei casi elencati in AUTORESTART. Mantiene il bot vivo attraverso errori transitori, ma non risolve mai un token non valido, un errore di sintassi o una dipendenza mancante: quelli richiedono comunque una correzione nel codice.
  4. Fai attenzione ai rate limit dell’API di Discord (429): il limite globale è di circa 50 richieste/secondo per token del bot, con bucket per-route più stretti (creazione/modifica canale consente circa 2 modifiche ogni 10 minuti per canale). Usa la cache in modo aggressivo, usa una coda asincrona che rispetti gli header X-RateLimit-Remaining/X-RateLimit-Reset-After, e usa i webhook per gli invii di massa. Un bot che continua a inondare Discord di richieste viene arrestato con ABUSE_REQUESTS.

Guide correlate

Se i log non indicano una causa chiara, il nostro team di supporto può aiutarti ad approfondire.

Contattaci

Se continui a riscontrare difficoltà tecniche, il nostro team di supporto specializzato è disponibile ad assisterti. Contattaci e saremo felici di aiutarti a risolvere qualsiasi problema: la qualità del supporto è una parte importante del motivo per cui gli sviluppatori valutano Square Cloud 4,9/5 su 402 recensioni su Google e Trustpilot.