ACLClouds
ACLClouds

Ospitare un bot Discord in Node.js: discord.js v14

Progetto npm, intent, token, avvio: i passaggi per mettere online un bot discord.js v14, uno alla volta.

Un bot discord.js v14 è un progetto Node.js classico: un package.json, un file di ingresso e alcune dipendenze. I passaggi utili sono sempre gli stessi: creare il progetto, dichiarare gli intent, leggere il token dall’ambiente e verificare l’avvio prima di affidare il bot al server.

  • discord.js v14 funziona con Node.js 18 o successivo, e il client dichiara i suoi intent.
  • Il token si legge dalle variabili d’ambiente, mai da index.js.
  • Used disallowed intents e l’errore 4014 derivano dalla stessa impostazione: un intent privilegiato disattivato nel portale.

Crea il progetto

discord.js v14 funziona con Node.js 18 o successivo. Il progetto è composto da un package.json, che elenca le dipendenze, e da un file di ingresso, index.js.

  • npm init -y: crea il package.json con i valori predefiniti.
  • npm install discord.js: aggiunge discord.js v14 alle dipendenze.
  • Nella sezione scripts di package.json aggiungete "start": "node index.js" per avviare il bot con npm start.

Scrivere il client

Il client deve dichiarare gli intent di cui ha bisogno. Un intent assente dal codice non riceve eventi, e un intent privilegiato non attivo nel portale fa fallire la connessione.

  • GatewayIntentBits.Guilds e GatewayIntentBits.GuildMessages: eventi dei server e dei messaggi.
  • GatewayIntentBits.MessageContent: intent privilegiato, da attivare nel portale per sviluppatori per leggere il testo dei messaggi.
  • client.login(process.env.DISCORD_TOKEN): il token arriva dall’ambiente, mai dal codice.

Avviare e verificare

Provate il bot in locale prima del caricamento. Un bot connesso deve mostrare la conferma prevista nel suo evento di avvio.

  • npm install: installa le dipendenze elencate in package.json.
  • npm start: avvia il bot con lo script start.
  • Se la console mostra Used disallowed intents, un intent privilegiato è disattivato nel portale: attivatelo e riavviate il bot.

Perché ACLClouds per un bot discord.js

Il piano gratuito include 1 bot, 315 MB di RAM e 715 MB di spazio. Node.js, ffmpeg, yt-dlp e deno sono già nell’immagine Node.js, e i file si caricano in SFTP.

  • Piano gratuito: 1 bot, 315 MB di RAM, 0,25 vCPU, 715 MB di spazio, caricamenti fino a 100 MB.
  • Immagine Node.js: ffmpeg, yt-dlp e deno già installati.
  • Accesso SFTP per bot sulla porta 2222, con i dati della scheda «Accesso SFTP».

Domande frequenti

Quale versione di Node.js scegliere?

Per un nuovo progetto discord.js v14, puntate a Node.js 18 o successivo, ancora mantenuto. Le versioni vecchie finiscono per dare problemi di sicurezza.

Devo caricare la cartella node_modules?

No. Pesa molto, e lo spazio gratuito è di 715 MB. Caricate package.json e package-lock.json e lasciate che l’installazione ricrei la cartella.

Perché il bot mostra Used disallowed intents?

Il codice richiede un intent privilegiato, come MessageContent, che non è attivo nel portale per sviluppatori di Discord. Attivatelo e riavviate il bot.