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

discord.py
software
GenereLibreria di Python
SviluppatoreRapptz
Ultima versione1.7.3
Sistema operativoMultipiattaforma
LinguaggioPython
LicenzaMIT
(licenza libera)
Linguainglese
Sito webdiscordpy.rtfd.org/en/latest

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[2], compatibile con versioni di Python 2.7+ e 3.3+. La versione 0.10.0 è stata rilasciata il 28 giugno 2016[3] è stata la prima versione totalmente compatibile col modulo asyncio, che permette di scrivere codice Python usando la sintassi async/await[4].

Il 9 aprile 2019 è stata rilasciata la versione v1.0.0[5], frutto di una completa ristrutturazione[6] e con molteplici cambiamenti non retrocompatibili; inoltre, è stato abbandonato il supporto per Python 3.4.

La versione più recente è la 1.7.3[7].

I creatori hanno annunciato la fine dello sviluppo della libreria[8] a fine Agosto 2021[9].

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 esattamente come un utente umano.

Funzioni

Il Bot può eseguire, così come un normale utente, le seguenti operazioni:

  • leggere i messaggi
  • inviare messaggi
  • allegare file[10]
  • scrivere in privato agli utenti

Non può naturalmente leggere i messaggi di canali[11] che per questioni di autorizzazione[12] non possa vedere.

Allo stesso modo, per mancanza di autorizzazione da parte del proprietario[13] del server (che i programmatori usano chiamare Guild[14]) potrebbe subire limitazioni nei permessi per:

  • scrivere in privato agli utenti
  • menzionare gli utenti
  • espellere gli utenti[15]
  • bannare gli utenti[16]
  • modificare il nickname degli altri utenti

Le autorizzazioni dei singoli Bot sono gestite da Discord Developer Portal, che genera link di invito al server per i Bot a seconda dei permessi che il ruolo personalizzato richiede. In caso di mancata autorizzazione, il compilatore restituisce un errore.

Un Bot avente tutte le autorizzazioni all'interno di un server, può accedere a gran parte del pacchetto dati[17] degli utenti a lui visibili, che include:

  • l'indirizzo IP
  • l'account connesso a Discord (Twitch, Twitter, Steam, spotify)
  • il numero discriminatore[18]
  • una lista di qualsiasi sessione attiva: PC, cellulare, browser (incluso indirizzo IP)
  • la lista degli amici
  • la lista degli utenti bloccati
  • informazioni sui pagamenti (Nitro[19])
  • informazioni sviluppatore[20] (per webhooks, Bot)
  • la lista degli utenti. (Dall'aggiornamento alla versione 1.7 ha causato problemi[21], in quanto necessita di abilitare da Discord Developer Portal[22] una funzione privilegiata[23])

Esempi di codice

Il codice seguente è lo stretto necessario per un programma che semplicemente porti il Bot online.

import discord
import discord.ext.commands.errors
from discord.ext import commands
from discord import client

token = "<inserisci-qui-il-token-del-bot>" #I token dei Bot vengono presi da Discord Developer Portal, e vengono immediatamente rinnovati se trovati online dal sistema di Discord
Bot = commands.Bot(command_prefix = "£", description = "<inserisci-qui-la-descrizione-del-bot>")
gioco = discord.Game("£Aiuto | Bot | @Bot#1127")

Bot.run(token)

Il codice di cui sotto contiene un piccolo evento aggiunto, che stampa a schermata Bot#1127 è ora online ID: 12345678

@Bot.event
async def on_ready():
    print(Bot.user, " è ora online ", "ID: ", Bot.user.id)
    await Bot.change_presence(status = discord.Status.idle, activity = gioco)

Collegamenti esterni

Note

  1. ^ Discord.py, su awesomeopensource.com. URL consultato l'11 Maggio 2021.
  2. ^ (EN) Release v0.1.0 · Rapptz/discord.py, su GitHub. URL consultato il 12 maggio 2021.
  3. ^ (EN) Release v0.10.0 · Rapptz/discord.py, su GitHub. URL consultato il 12 maggio 2021.
  4. ^ asyncio — Asynchronous I/O — Python 3.9.5 documentation, su docs.python.org. URL consultato il 12 maggio 2021.
  5. ^ (EN) Release v1.0.0 · Rapptz/discord.py, su GitHub. URL consultato il 12 maggio 2021.
  6. ^ Migrating to v1.0, su discordpy.readthedocs.io. URL consultato il 12 maggio 2021.
  7. ^ Versioni di Discord.py, su discordpy.readthedocs.io.
  8. ^ Rapptz, The future of Discord.py, su Github, 28 Agosto 2021. URL consultato il 21 Ottobre 2021.
  9. ^ Danny, creator of discord.py, is halting development of the library. Discord.py has come to an end - will likely have a major effect on bots, su Reddit, 28 Agosto 2021. URL consultato il 21 Ottobre 2021.
  10. ^ Che devono però essere presenti nella stessa cartella del programma, e che vanno quindi consegnati nel caso ci si avvalga di un servizio di hosting.
  11. ^ Si veda Discord, alla definizione di canale, sottodivisione del "server".
  12. ^ Si veda Discord, nella sezione riguardante la gerarchia dei ruoli, e i vari permessi.
  13. ^ Dalla stessa libreria Discord.py definito (discord.guild.)owner.user
  14. ^ Server vs Guild, su GitHub, 15 Agosto 2016. URL consultato l'11 Maggio 2021.
  15. ^ Esiste il comando apposito member.kick()
  16. ^ Esiste il comando apposito member.ban()
  17. ^ Il tuo Pacchetto Dati di Discord, su support.discord.com.
  18. ^ Quattro cifre, separate dal nome utente da un'hashtag, che anche i Bot a loro volta hanno.
  19. ^ Servizio a pagamento, abbonamento "premium" di Discord
  20. ^ Discord Developer Portal associa ogni Bot all'utente che l'ha creato.
  21. ^ discord.py - discord py, ctx.guild.members, only returns bot, su Stack Overflow. URL consultato l'11 maggio 2021.
  22. ^ discord.guild.members, su Python.tutoriallink.com.
  23. ^ discord.Intents, su https://discordpy.readthedocs.io/. URL consultato l'11 Maggio 2021.