Errori comuni dei bot Discord e come leggerli
Intent disattivati (4014), limite di frequenza (429), EAI_AGAIN, token non valido: cosa significa ogni errore e cosa controllare per primo.
La maggior parte dei guasti di un bot Discord si riduce a quattro errori. Ognuno ha una causa precisa, e l’ordine dei controlli conta: il token e gli intent si verificano in due minuti, il limite di frequenza richiede di rivedere il ciclo di invio, e EAI_AGAIN riguarda la rete più che il vostro codice.
- Errore 4014: si richiede un intent privilegiato non attivo nel portale.
- Errore 429: troppi invii troppo in fretta. Aspettate il tempo indicato da Discord.
- EAI_AGAIN: errore di risoluzione DNS lato rete, non nel vostro codice.
- Token non valido: LoginFailure o «invalid token», da correggere nella variabile.
Intent disattivati: errore 4014
L’errore 4014 (Disallowed intents) significa che il bot richiede un intent privilegiato, come la lettura del contenuto dei messaggi, senza averlo attivato nel portale per sviluppatori. Discord rifiuta quindi la connessione.
- Aprite il portale per sviluppatori, sezione Bot, e attivate gli intent privilegiati usati dal codice.
- Richiedete nel codice solo gli intent che vi servono: ogni intent superfluo è un permesso in più da attivare.
- Dopo una modifica, riavviate il bot. Un riavvio senza modifiche riproduce lo stesso errore.
Limite di frequenza: errore 429
Il codice 429 (Too Many Requests) significa che il bot ha superato il ritmo consentito da Discord, spesso perché invia o modifica messaggi in un ciclo. La risposta indica quanto attendere.
- discord.js e discord.py attendono da soli per la maggior parte delle richieste, ma un ciclo di invii senza fine non si ferma.
- Distanziate le azioni ripetute: un messaggio ogni qualche secondo è meglio di una raffica.
- Rispettate il tempo di attesa indicato e non riavviate il bot in ciclo durante quel tempo.
Rete: EAI_AGAIN ed ECONNRESET
EAI_AGAIN significa che il nome di dominio di Discord non è stato risolto. ECONNRESET significa che la connessione è stata interrotta a metà. Questi errori vengono dalla rete tra il server e Discord, non da una riga del vostro codice.
- Se l’errore compare a intermittenza, la maggior parte delle librerie ritenta la connessione con un ritardo crescente.
- Interruzioni DNS o di connessione sono note e in corso di correzione. Se il codice è corretto e l’errore persiste, contattate il supporto indicando l’ora esatta.
- Un errore isolato è spesso passeggero: aspettate qualche minuto prima di cambiare qualcosa.
Token non valido: LoginFailure
Un token non valido, scaduto o reimpostato fa fallire la connessione già all’avvio. Il messaggio è spesso Improper token has been passed in Python, oppure An invalid token was provided in Node.js.
- Verificate che la variabile contenga il token, senza spazi o virgolette in più.
- Se il token è stato reimpostato nel portale, il valore precedente non funziona più: copiate quello nuovo.
- Non incollate mai il token in un messaggio per farlo verificare.
Perché ACLClouds per i vostri bot
Gli errori di token e intent si correggono nel codice e nel portale Discord. Il piano gratuito dà al bot uno spazio dedicato in cui correggere il codice e ridistribuirlo.
- Piano gratuito: 1 bot, 315 MB di RAM, 0,25 vCPU, 715 MB di spazio.
- Accesso SFTP per bot sulla porta 2222, per correggere il codice e ricaricarlo.
- ffmpeg, yt-dlp e deno inclusi nelle immagini Node.js e Python.
Domande frequenti
Un bot può essere bloccato per un errore 429?
Un errore 429 è un limite temporaneo, non una sanzione. Ignorare ripetutamente le attese, però, può portare a un blocco più lungo da parte di Discord. Correggete il ciclo.
Il mio bot era online ieri e oggi non lo è. Perché?
Leggete prima i log: un errore di token, un intent disattivato o un’interruzione di rete lasciano una traccia. Controllate anche la scadenza del piano gratuito: 4 giorni, rinnovabili dalla pagina del bot nei 2 giorni precedenti la scadenza o dopo una sospensione.
Perché EAI_AGAIN compare solo a tratti?
Una risoluzione DNS che fallisce a intermittenza spesso dipende dalla rete. Riprovate dopo una pausa; se l’errore persiste con codice corretto, contattate il supporto indicando l’ora esatta.