Discord.py

Versione del 12 mag 2021 alle 13:28 di FLAK-ZOSO (discussione | contributi) (tolgo il template)

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
GenereBot (non in lista)
Ultima versione1.7.2
Sistema operativoMicrosoft Windows
LinguaggioPython
Licenzalicenza MIT
(licenza libera)
LinguaInglese
Sito webAPI

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]
  • Accedere alla lista degli utenti. (Dall'aggiornamento alla versione 1.7 ha causato problemi[5], in quanto necessita di abilitare da Discord Developer Portal[6] una funzione privilegiata[7])
  • Scrivere in privato agli utenti

Non potrà naturalmente leggere i messaggi di canali[8] che per questioni di autorizzazione[9] non possa vedere.

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

  • Scrivere in privato agli utenti
  • Menzionare gli utenti
  • Espellere gli utenti[12]
  • Bannare gli utenti[13]
  • 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

Applicazioni

A partire dalle funzioni di base, utilizzando altri moduli tra i quali asyncio.py e time.py[14], 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

  1. ^ Discord.py, su awesomeopensource.com. URL consultato l'11 Maggio 2021.
  2. ^ a b Versioni di Discord.py, su discordpy.readthedocs.io.
  3. ^ Compatibilità della versione 1.0, su discordpy.readthedocs.io.
  4. ^ 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.
  5. ^ discord.py - discord py, ctx.guild.members, only returns bot, su Stack Overflow. URL consultato l'11 maggio 2021.
  6. ^ discord.guild.members, su Python.tutoriallink.com.
  7. ^ discord.Intents, su https://discordpy.readthedocs.io/. URL consultato l'11 Maggio 2021.
  8. ^ Si veda Discord, alla definizione di canale, sottodivisione del "server".
  9. ^ Si veda Discord, nella sezione riguardante la gerarchia dei ruoli, e i vari permessi.
  10. ^ Dalla stessa libreria Discord.py definito (discord.guild.)owner.user
  11. ^ Server vs Guild, su GitHub, 15 Agosto 2016. URL consultato l'11 Maggio 2021.
  12. ^ Esiste il comando apposito member.kick()
  13. ^ Esiste il comando apposito member.ban()
  14. ^ 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.