Bot Discord in Python: come creare il tuo bot personalizzato

Avere un server Discord personale è molto impegnativo: per questo motivo i bot che si occupano delle funzioni amministrative sono così apprezzati. Creare un bot del genere è facile grazie alla libreria Python discord.py e se si dispone di alcune nozioni di base su questo linguaggio.

Procedura passo per passo per creare il tuo bot Discord in Python

Prima di iniziare a programmare il tuo bot, devi creare un bot Discord. Per farlo, puoi creare un’applicazione personale su Discord. Da lì in poi, la strada per creare il tuo bot Discord è tutta in discesa. Il codice che ti servirà per il tuo bot dipende da quali attività desideri automatizzare. Il bot descritto in questa guida ha la funzione di aggiungere ruoli su un server Discord.

Primo passaggio: installare discord.py

Per creare il tuo bot, ti serve soprattutto la libreria Python discord.py, che devi quindi installare per prima cosa sul tuo sistema. Come al solito, in Python, per l’installazione si utilizza pip. Su Windows, il comando da terminale necessario si presenta così:

py -3 -m pip install -U discord.py
python

Secondo passaggio: creare un documento Python

Crea un nuovo documento Python scrivendo il codice del tuo bot. Per il tuo file Python puoi utilizzare diversi editor di codice oppure un ambiente di sviluppo integrato (IDE), come ad esempio Pycharm.

Terzo passaggio: creare il collegamento con Discord

Innanzitutto, importa la libreria Discord nel tuo documento Python e posiziona il token del bot che hai ottenuto durante la registrazione del tuo bot Discord sulla pagina dedicata agli sviluppatori di Discord. A tal fine devi sostituire il segnaposto con il token del tuo bot personale:

import discord
TOKEN = token_placeholder
python

La libreria è necessaria per interagire con l’API Discord. Per poterti collegare a Discord, è necessaria anche un’istanza del cosiddetto oggetto client. Per crearla, utilizza il codice seguente:

client = discord.Client()
python

Quarto passaggio: controllare che il collegamento sia stato creato correttamente

In questo passaggio devi integrare un metodo asincrono nel tuo documento Python per verificare che il collegamento del tuo bot con il server Discord funzioni senza problemi. Per farlo occorre reagire all’evento on_ready definito nell’API discord.py. Per permettere alla tua funzione di agire da gestore di eventi, utilizza il decoratore di funzione Python @client.event.

@client.event
async def on_ready():
    print(f'{client.user} è collegato con i server seguenti:\n')
    for server in client.guilds:
        print(f'{server.name}(id: {server.id})')
python
N.B.

Nella programmazione di bot Discord si utilizzano spesso le funzioni asincrone. Di conseguenza, la funzione viene eseguita in un thread dedicato, disaccoppiato dal thread principale. In questo modo, il thread principale non è bloccato e le attività del bot possono essere eseguite in parallelo.

Quinto passaggio: aggiungere funzionalità al tuo bot

L’API discord.py definisce un evento che ti permette di eseguire le funzionalità del tuo bot, ossia l’evento on_message. Questo evento viene sempre attivato quando il tuo bot Discord riceve un messaggio. Un metodo che gestisce questo evento dovrebbe innanzitutto controllare da quale mittente proviene il messaggio e, quindi, eseguire la funzionalità desiderata: nel nostro caso, l’aggiunta di ruoli.

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!add_role'):
        # trova nome del ruolo
        role_name = message.content.split(' ')[1]
        # cerca il ruolo Discord corrispondente
        role = discord.utils.get(message.guild.roles, name=role_name)
        # controllo dell'esistenza del ruolo
        if role is None:
            await message.channel.send(f'Ruolo "{role_name}" non esiste)
            return
        # assegnazione del ruolo
        await message.author.add_roles(role)
        await message.channel.send(f'Ruolo "{role_name}" aggiunto a {message.author}')

Inizialmente, la funzione controlla se il messaggio ricevuto proviene dal bot Discord stesso. In questo caso, la funzione viene lasciata con l’istruzione return.

In un secondo passaggio si esamina più attentamente il contenuto del messaggio. Se inizia con la serie di caratteri !add_role, il bot lo interpreta come comando. In pratica, gli utenti del server devono mettere la stringa !add_role all’inizio delle loro richieste al bot Discord. Ovviamente puoi utilizzare una qualsiasi serie di caratteri a piacere come comando. Tuttavia, è consigliabile controllare che la serie di caratteri non ricorra nell’uso del linguaggio naturale.

Da un messaggio interpretato dal bot come comando corretto si ricava successivamente il nome del ruolo desiderato per mezzo della funzione Python split(). Nel passaggio successivo, viene cercato il ruolo corrispondente sul tuo server. A tal fine puoi sfruttare l’oggetto message, che alla voce message.guild fornisce diverse informazioni sul tuo server.

Se il ruolo non esiste e, quindi, presenta il valore “None”, viene emesso un messaggio di errore e la funzione viene lasciata con l’istruzione return. In caso contrario, il ruolo viene assegnato di conseguenza. A tal fine si utilizza la funzione add_roles della libreria discord.py; la funzione è definita sull’oggetto message.

N.B.

Ovviamente il tuo bot Discord può svolgere diverse azioni. Ad esempio puoi creare bot che eseguono attività simili all’apprezzato bot per chat e moderazione MEE6 oppure scrivere i tuoi personali bot musicali per Discord. Abbiamo scelto di descrivere un esempio semplice e comprensibile anche per chi sta muovendo i primi passi.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.