Pensate che programmare sia una cosa impossibile e che possono farlo solo i cervelloni? Credete che programmando si possono avere delle conseguenze sul computer, e quindi avete paura a fare qualsiasi cosa riguardo a questo mondo? Non preoccupatevi! Non è affatto difficile. In questa guida vedremo come programmare un bot di discord in discord.js (usando la nuova v13), partendo dalle basi di JavaScript fino ad arrivare a funzioni molto più complesse.
Sommario
Requisiti
Prima di iniziare, guardiamo cosa ci serve.
- Node.js v16.6.x
- Windows 10 (o un qualsiasi sistema operativo in grado di usare l\’ultima versione di node)
- Visual Studio Code
Link utili
Qua sotto vi metto i link per scaricare ciò che ci serve. Vi consiglio vivamente di installare i seguenti tool prima di iniziare. Se già li avete, passate al prossimo paragrafo.
- Node.js installer (scaricate la versione \”current\”)
- Visual Studio Code installer
- Programma di installazione Windows 10
IntelliSense
In questo primo articolo iniziamo a vedere gli strumenti che utilizzeremo nel nostro progetto. Il primo strumento è l\’IntelliSense che, con la potenza del Typescript, ci fornirà un aiuto enorme durante lo sviluppo del nostro bot. Di seguito è riportata un\’immagine ufficiale riguardo l\’uso di questa funzione.

Cos\’è l\’IntelliSense?
IntelliSense è una funzione di Visual Studio Code che permette di ricevere suggerimmenti durante la scrittura del codice, nel nostro caso, Javascript.
Questa funzione ci permetterà di eseguire alcune azioni più facilmente, come:
- Completare il codice grazie a suggerimenti, semplicemente cliccando invio:

- Avere info dettagliate riguardo i parametri di alcune funzioni:

- Consultare una lista dei metodi e dei valori legati ad un
object
con le loro informazioni per scegliere quello di cui abbiamo bisogno:

TypeScript
Cos\’è TypeScript?
IntelliSense utilizza strumenti specifici per ogni linguaggio di programmazione per fornirci i suoi servizi. Visual Studio Code ha un supporto nativo per il JavaScript grazie all\’aiuto del TypeScript.
Typescript è un linguaggio di programmazione che si basa sul JavaScript, aggiungendo definizioni di tipo (types).
I types forniscono un modo per descrivere la forma di un oggetto, fornendo una migliore documentazione e consentendo a TypeScript di verificare che il codice funzioni correttamente.
Ancora confusi? Semplicemente, TypeScript controlla che il vostro codice sia esatto, non soltanto dal punto di vista sintattico, grazie ai types, ma nel caso commettiate qualche errore, ve lo comunicherà prima di eseguire il codice, addirittura mentre lo scriviamo, grazie al supporto nativo di Visual Studio Code.
Cosa sono i types?
I types sono descrizioni di qualsiasi cosa in JavaScript. Pensate a quando usiamo un semplice console.log()
(per mandare qualcosa nel promt) nel nostro codice: abbiamo utilizzato un oggetto chiamato console
ed eseguito la funzione log
. Grazie a questi types, TypeScript sa che console
ha una certa funzione (o metodo) chiamata log
e ci dirà se il nostro codice è esatto. Se invece utilizzassimo una funzione come console.send()
, che non esiste, ci mostrerà un errore:

Funzioni del TypeScript
TypeScript può quindi aiutarci a non sbagliare, mostrandoci degli errori direttamente nel nostro editor. Nasce come un linguaggio di programmazione, ma noi utilizzeremo la sua potenza con il JavaScript in Visual Studio Code. Ora osserviamo quali sono le sue principali funzioni:
- Controllare che, in generale, il codice non includa parti che indurrebbero ad un errore durante l\’esecuzione, come:

- Includere un fix veloce per errori semplici, come quello nell\’immagine precedente:

- Mantenere sempre lo stesso type per ogni elemento, in modo da essere sempre a conoscenza di cosa un elemento rappresenti:

- Assicurare che tutti i types vengano utilizzati propriamente:

- Assicurare che tutte le funzioni vengano chiamate con i parametri corretti:

Assegnare types manualmente
Ovviamente, Typescript non può sempre immaginare che types vogliamo assegnare ad alcuni elementi, perciò dovremo dirglielo noi! Per farlo utilizzeremo i JSDoc. Prendiamo il seguente esempio di codice:
function run(message, args) {
console.log(message.auhtor);
return args.join(\" \");
}
In questo caso Typescript non sa quali sono i types di message
e args
perciò non sarà in grado di rilevare eventuali errori, come message.auhtor
che non esiste. Per risolvere questo problema seguiamo la seguente procedura:
- Spostiamo il cursore su uno dei parametri che abbiamo scritto e clicchiamo su Quick Fix…:

- Clicchiamo su Infer all types from usage:

- A questo punto verrà creato un JSDoc e Typescript proverà ad indovinare i types dei parametri:

- Ora non ci resta che controllare e sostituire i types nelle parentesi graffe con quelli corretti.
message
ha untype
creato da discord.js chiamatoMessage
, perciò ci basterà scrivere questo nome e, quando apparirà nella lista dei suggerimenti, cliccare \”Invio\”:

Ora Typescript potrà finalmente aiutarci anche all\’interno della funzione! Il codice precedente sarà adesso come il seguente e ci avvertirà dell\’errore in message.auhtor
:
const { Message } = require(\"discord.js\");
/**
* @param {Message} message
* @param {string[]} args
*/
function run(message, args) {
console.log(message.auhtor);
return args.join(\" \");
}
Lista dei types
Nota: Questa sezione include riferimenti a elementi JavaScript non ancora trattati nella guida come array o Promise.
Qui di seguito è riportata una lista dei vari types predefiniti che possono essere utilizzati per descrivere i nostri elementi. Se volete utilizzare un type esterno, cioè creato da un altro package, ricordate di utilizzare la procedura descritta nel punto 4 della sezione precedente.
any:
Può essere qualsiasi cosa e disabilita tutti i controlli su di lui, sconsigliato da usare. Es.1
,undefined
;bigint
: Indica un numero molto grande. Es.30 milioni
;boolean
: Sì o no. Es.true
,false
;null
: Nulla, ma nella forma JavaScript. Es.null
;number
: Indica un numero qualsiasi. Es.15
,123.4
;string
: Indica una stringa JavaScript. Es.\"Sus\"
,\"\"
;symbol
: Indica un simbolo univoco in JavaScript. Es.Symbol(\"Sus\")
;undefined
: Nulla, qualcosa che non esiste. Es.undefined
;unknown
: Può essere qualsiasi cosa e richiede di controllare manualmente che type abbia prima di eseguire qualsiasi azione con esso. Es.\"Sus\"
,null
;void
: Di nuovo nulla, ma utilizzato nelle funzioni che non usano nessunreturn
;x[]
: Un array dove tutti gli elementi hanno come tipox
. Es.string[]
,unknown[]
;Promise<x>
: Una promessa che restituirà un elemento di tipox
quando verrà esaudita. Es.Promise<string>
,Promise<unknown>
.
Estensioni
Per poter attivare e potenziare le funzioni descritte in questo articolo, direttamente in Visual Studio Code, avremo bisogno delle seguenti estensioni:
Conclusioni
Siamo arrivati alla fine di questo primo articolo, dove abbiamo analizzato alcune delle funzioni più importanti che ci serviranno per programmare il nostro bot Discord. Nel prossimo articolo vedremo tutte le funzioni base di JavaScript che saranno utili per il coding. Lasciate un commento se avete dubbi, ti risponderemo il prima possibile 🙂
Lascia un commento