Discord.py
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 | |
---|---|
Genere | Bot (non in lista) |
Ultima versione | 1.7.2 |
Sistema operativo | Microsoft Windows |
Linguaggio | Python |
Licenza | licenza MIT (licenza libera) |
Lingua | Inglese |
Sito web | API |
Versioni
La prima versione è chiamata V0.10.0[2] ed è stata rilasciata nel 2018[senza fonte], disponibile da Python 3.5.3[3] in poi.
Il passaggio alla versione 1.0 è definito così:
"one of the biggest breaking changes in the library due to a complete redesign"
La versione più recente è la 1.7.2[2], disponibile dalla versione di Python 3.9.1 in poi.
Utilizzo
Con l'importazione del modulo all'interno di un programma, è possibile dare vita a un Bot il quale, attraverso le funzioni e le variabili della libreria, potrà comportarsi su Discord esattamente come un utente umano.
Funzioni
Il Bot potrà quindi eseguire, come un normale utente, le seguenti operazioni:
- Leggere i messaggi
- Inviare messaggi
- Allegare file[4]
- Scrivere in privato agli utenti
Non potrà naturalmente leggere i messaggi di canali[5] che per questioni di autorizzazione[6] non possa vedere.
Allo stesso modo per mancanza di autorizzazione da parte del proprietario[7] del server (che i programmatori usano chiamare Guild[8]) potrebbe subire limitazioni nei permessi per:
- Scrivere in privato agli utenti
- Menzionare gli utenti
- Espellere gli utenti[9]
- Bannare gli utenti[10]
- 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 restituirà l'errore seguente:
discord.ext.command.errors.MissingPermission
Un Bot avente tutte le autorizzazioni all'interno di un server, può accedere a gran parte del pacchetto dati degli utenti a lui visibili, che include:
- Il tuo indirizzo IP
- Account che hai connesso a Discord (Twitch, Twitter, Steam, spotify)
- Il tuo numero discriminatore[11]
- Una lista di qualsiasi sessione attiva tu abbia: PC, cellulare, browser (incluso indirizzo IP)
- La lista dei tuoi amici
- La lista degli utenti bloccati
- Informazioni sui pagamenti (se sei iscritto a Nitro[12])
- Informazioni sviluppatore[13] (per webhooks, Bot)
- La lista degli utenti. (Dall'aggiornamento alla versione 1.7 ha causato problemi[14], in quanto necessita di abilitare da Discord Developer Portal[15] una funzione privilegiata[16])
Applicazioni
A partire dalle funzioni di base, utilizzando altri moduli tra i quali asyncio.py e time.py[17], si possono creare applicazioni utili, tra le quali:
- Ban/Kick a tempo determinato
async def ban_temporaneo(member, tempo):
await member.ban()
await asyncio.sleep(tempo)
await member.unban()
- Stato del Bot a tempo determinato
async def Cambia_stato(ctx, tempo, nuovo_stato):
nuovo_stato = discord.Game(str(nuovo_stato))
await Bot.change_presence(status = discord.Status.idle, activity = nuovo_stato)
tempo = float(tempo)
from asyncio import sleep
await sleep(tempo)
await Bot.change_presence(status = discord.Status.idle, activity = gioco)
Esempi di codice
Il codice seguente è lo stretto necessario per un programma che semplicemente porti il Bot online.
import discord #L'alternativa è di importare discord.client, discord.ban, discord.kick, discord.events e così via
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
- ^ Discord.py, su awesomeopensource.com. URL consultato l'11 Maggio 2021.
- ^ a b Versioni di Discord.py, su discordpy.readthedocs.io.
- ^ Compatibilità della versione 1.0, su discordpy.readthedocs.io.
- ^ 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.
- ^ Si veda Discord, alla definizione di canale, sottodivisione del "server".
- ^ Si veda Discord, nella sezione riguardante la gerarchia dei ruoli, e i vari permessi.
- ^ Dalla stessa libreria Discord.py definito (discord.guild.)owner.user
- ^ Server vs Guild, su GitHub, 15 Agosto 2016. URL consultato l'11 Maggio 2021.
- ^ Esiste il comando apposito member.kick()
- ^ Esiste il comando apposito member.ban()
- ^ Quattro cifre, separate dal nome utente da un'hashtag, che anche i Bot a loro volta hanno.
- ^ Servizio a pagamento, abbonamento "premium" di Discord
- ^ Discord Developer Portal associa ogni Bot all'utente che l'ha creato.
- ^ discord.py - discord py, ctx.guild.members, only returns bot, su Stack Overflow. URL consultato l'11 maggio 2021.
- ^ discord.guild.members, su Python.tutoriallink.com.
- ^ discord.Intents, su https://discordpy.readthedocs.io/. URL consultato l'11 Maggio 2021.
- ^ L'equivalente di <locale> (lettura "local-e") in C++, importa una serie di variabili a seconda del luogo nel quale ci si trova, tra le quali il fuso orario e i caratteri UTF-8 della lingua locale.