# Discord.py

Discord.py è una libreria open source per il linguaggio di programmazione Python, che permette di sviluppare Bot per il social media Discord.

## Storia

La libreria discord.py è stata sviluppata da Rapptz come modulo Python per sviluppare Bot per la piattaforma VoIP Discord.
La prima versione della libreria è stata rilasciata il 23 agosto 2015, compatibile con versioni di Python 2.7+ e 3.3+. La versione 0.10.0 è stata rilasciata il 28 giugno 2016 è stata la prima versione totalmente compatibile col modulo asyncio, che permette di scrivere codice Python usando la sintassi async/await.
Il 9 aprile 2019 è stata rilasciata la versione v1.0.0, frutto di una completa ristrutturazione e con molteplici cambiamenti non retrocompatibili; inoltre, è stato abbandonato il supporto per Python 3.4 e precedenti.
I creatori hanno annunciato la fine dello sviluppo della libreria a fine Agosto 2021, per poi riprendere lo sviluppo nei primi giorni di Marzo 2022.
Il 18 agosto 2022 è stata rilasciata la version v2.0.0, che portò molti cambiamenti non retrocompatibili, i più notevoli sono una completa revisione di molte componenti async, e la rimozione del supporto per gli account utente, consentendo fare login solo con gli account bot, in conformità con le modifiche ai termini di servizio di Discord; inoltre, è stato abbandonato il supporto per Python 3.7 e precedenti.
La versione più recente è la 2.4.0.

## Utilizzo

Dopo aver importato il modulo discord.py in un programma, è possibile utilizzare i suoi metodi per creare il codice di un Bot, il quale a tutti gli effetti può agire su Discord come un utente umano, ma avendo anche certe funzioni extra come i comandi applicazione e le componenti di messaggio.

### Funzioni

Il Bot può eseguire, così come un normale utente, le seguenti operazioni:
* leggere e inviare messaggi
* allegare file ad essi messaggi
* scrivere in privato agli utenti
* bannare, espellere e moderare gli utenti
* eliminare messaggi e canali
* creare guilds
* collegarsi a canali vocali e riprodurre audio
Non può naturalmente leggere i messaggi di canali che per questioni di autorizzazione non possa vedere. Non può neanche leggere il contenuto dei messaggi se gli appositi intenti non sono attivati.
Allo stesso modo, per mancanza di autorizzazione da parte del proprietario o dagli amministratori del guild, il bot potrebbe subire limitazioni nei permessi per eseguire diverse azioni, esse elencate nella documentazione dei permessi.
Le autorizzazioni dei singoli Bot sono gestite da Discord Developer Portal, che genera link di invito al guild per i Bot a seconda dei permessi selezionati. In caso di mancata autorizzazione, l'interprete restituisce un errore. I permessi per ogni particolare guild possono essere sempre modificati dagli amministratori del guild.

### Esempi di codice

Questo codice crea un semplice bot che quando si esegue il comando '!ciao', lui risponde.
Per fare bot più complessi, è suggerito usare la libreria discord.ext.commands, compresa in ogni installazione di discord.py. Esempi più avanzati si possono trovare sul sito GitHub della libreria.
Questo esempio è una copia modificata e tradotta dell'esempio ufficiale reply.py