ACLClouds
ACLClouds

Bot Discord offline: le cause e come risolverle

Token rifiutato, intent non autorizzati, crash, DNS, limiti di richieste o sospensione: come leggere l'errore del tuo bot Discord e rimetterlo online.

Un bot Discord va offline per cinque motivi principali: il programma si è fermato, il token è rifiutato, un intent non è autorizzato, la rete non raggiunge più Discord o l'hosting ha messo il bot in sospensione. La console del bot indica quasi sempre quale: ecco come leggere il messaggio e risolvere ogni caso.

  • Leggi il primo errore della console: i successivi ne sono spesso la conseguenza.
  • Un errore 401 o 4004 segnala un token rifiutato: generane uno nuovo con Reset Token.
  • Il codice 4014 segnala un intent privilegiato da attivare sul Developer Portal.
  • Il codice di uscita 137 indica in genere una memoria superata.

Leggi il primo errore

Prima di modificare il codice, apri la console o i log e risali fino al primo errore mostrato dopo l'avvio. Le righe successive ne sono spesso la conseguenza. Annota anche l'ora dell'arresto: un arresto a orario fisso non ha la stessa causa di un arresto al primo messaggio.

  • Il bot non si avvia affatto: dipendenza, file o versione.
  • Il bot si avvia e poi si disconnette: token, intent o rete.
  • Il bot resta connesso ma non risponde più: errore in un comando o limite di richieste.

Token rifiutato o reimpostato

Un errore 401 o il codice di chiusura 4004 (Authentication failed) significa che Discord rifiuta il token. Può essere stato reimpostato dal Developer Portal, o da Discord stesso se è stato pubblicato, per esempio in un repository GitHub pubblico. Genera un nuovo token con Reset Token, sostituiscilo nella variabile DISCORD_TOKEN, poi riavvia.

  • Copia il token dalla pagina Bot, non l'ID dell'applicazione né il client secret.
  • Togli spazi e virgolette attorno al valore.
  • Tieni il token fuori dal codice, come spiega la guida per gestire token e variabili segrete.

Intent non autorizzati

Il codice di chiusura 4014 (Disallowed intent(s)) compare quando il codice richiede un intent privilegiato non attivato sul Developer Portal: Message Content, Server Members o Presence. Attivalo nella scheda Bot, o toglilo dal codice se il bot non ne ha bisogno. Oltre i 100 server, questi intent richiedono anche un'approvazione di Discord.

  • discord.py: intents.message_content = True deve corrispondere all'impostazione del portale.
  • discord.js: GatewayIntentBits.MessageContent segue la stessa regola.
  • I comandi slash funzionano senza Message Content.

Crash, memoria e dipendenze

Un programma che si ferma porta con sé il bot. Cannot find module o ModuleNotFoundError segnala una dipendenza assente da package.json o da requirements.txt. Un arresto con il codice 137 indica in genere che il bot ha superato la sua memoria: cache troppo grande, perdita di memoria o riproduzione audio. Anche un'eccezione non gestita in un evento può fermare il processo.

  • Correzioni passo dopo passo: modulo Node.js non trovato e modulo Python non trovato.
  • Memoria superata: la guida al codice di uscita 137.
  • Racchiudi ogni comando in un try/catch (Node.js) o in un try/except (Python) che scrive l'errore nei log.

Rete, DNS e limiti di richieste

getaddrinfo EAI_AGAIN o ECONNRESET segnala un'interruzione DNS o di rete tra il bot e Discord. discord.js e discord.py si riconnettono da soli al gateway; se l'errore si ripete, annota l'ora e comunicala al tuo hosting. Una risposta 429 indica un limite di richieste: il bot invia troppe chiamate, spesso in un ciclo. Discord blocca anche temporaneamente un indirizzo IP che accumula richieste non valide, 10.000 in 10 minuti, per esempio con un token rifiutato.

  • Non riavviare il bot in loop con un token non valido: ogni tentativo conta come una richiesta non valida.
  • Lascia che la libreria gestisca le risposte 429: discord.js e discord.py attendono il tempo indicato da Discord.
  • Evita di modificare i ruoli o i messaggi di molti membri in un solo ciclo.

Sospensione e scadenza

Alcuni hosting gratuiti fermano un bot inattivo o dopo un certo numero di ore: controlla le condizioni della tua offerta. Con l'offerta Free di ACLClouds, il bot non va in sospensione: si ferma solo se non fai il rinnovo gratuito di 4 giorni. La prossima scadenza è indicata sulla scheda del servizio.

  • Un bot ospitato a casa si ferma anche quando si spegne il PC o il router.
  • Per una disponibilità continua, segui la nostra guida per ospitare un bot Discord 24/7.

Perché scegliere ACLClouds per questo bot

Il pannello aiuta a risolvere i guasti più comuni senza uscire dal browser. Quando manca il token, la console mostra una scheda per incollarlo e riavviare il bot. Quando il file di avvio non si trova, lo cerca nelle sottocartelle e propone di correggere il percorso con un clic. Un bot che si ferma in modo imprevisto si riavvia automaticamente.

  • Console e log in tempo reale nel pannello, anche con l'offerta gratuita.
  • Un accesso SFTP dedicato a ogni bot (porta 2222), anche con l'offerta gratuita.
  • Offerta Free senza sospensione, rinnovabile gratis ogni 4 giorni: segui il tutorial Python e Node.js.

Domande frequenti

Perché il mio bot è offline se il codice non è cambiato?

Il più delle volte il token è stato reimpostato, l'hosting è scaduto o la rete non raggiunge più Discord. Il primo errore della console indica quale.

Cosa significa l'errore 4014?

Il bot richiede un intent privilegiato (Message Content, Server Members o Presence) che non è attivato nella scheda Bot del Developer Portal. Attivalo o toglilo dal codice.

Come capire se il mio token è trapelato?

Un errore 401 o 4004 improvviso, senza che tu abbia cambiato nulla, ne è il segnale tipico. Genera un nuovo token con Reset Token e verifica che non compaia in nessun repository pubblico.

Il mio bot è online ma non risponde: cosa controllare?

Verifica che i comandi slash siano sincronizzati, che il bot abbia i permessi del canale e che l'intent Message Content sia attivo per i comandi con prefisso. Poi leggi gli errori mostrati a ogni comando.