Come creare un bot in Discord

Contenuto

In questo articolo, copriremo come creare un’applicazione per il bot, eseguire la prima autorizzazione sul server e scrivere il codice generico per normalizzarlo. Con il “framework” in atto, è già possibile aggiungere comandi personalizzati e verificare immediatamente come funzionano.

Creare l’applicazione e autorizzare il bot

Di seguito parleremo di due diversi metodi per creare un bot – usando JavaScript e Python. Ognuno di loro ha le proprie caratteristiche e sfumature, ma qui il metodo di creazione di un’applicazione e di autorizzazione del bot sul server rimane lo stesso, poiché non dipende dal linguaggio di programmazione scelto. Dopo di che potete passare alla selezione della libreria e lavorare con il codice.

Vai al portale degli sviluppatori di Discord

  1. Segui il link qui sopra per arrivare alla pagina principale del Discord Developer Portal. Usa le tue credenziali personali per accedere al tuo account.
  2. Crea una nuova applicazione cliccando sul pulsante “New Application”.
  3. Inserisci un nome per l’applicazione e conferma la sua creazione.
  4. Espandi il menu del sito cliccando il pulsante con tre linee orizzontali.
  5. Dall’elenco che appare, seleziona la sezione delle impostazioni “Bot”.
  6. Procedete ad aggiungere un nuovo bot per questa applicazione.
  7. Confermate la notifica visualizzata cliccando su “Sì, fallo”.
  8. Al termine, il sito si aggiornerà e si aprirà la pagina del bot, dove potrete cambiarne il nome, copiare il token o aggiungere un’icona che verrà visualizzata anche in Discord.
  9. Tuttavia, in questo momento il bot non è ancora segnato come tale e non sono stati impostati i permessi per esso, quindi attraverso lo stesso menu vai a “OAuth2”.
  10. Nell’elenco “Scopes”, spunta la casella “bot” per indicare il tipo di applicazione che hai creato.
  11. Trova il prossimo blocco, “Bot Permissions”, e spunta tutti i permessi che vuoi concedere al bot che stai creando.
  12. Fai lo stesso con gli altri tipi di permessi, corrispondono a quelli disponibili direttamente in Discord per i ruoli.
  13. Ora il bot è pronto per l’autorizzazione. Nella stessa pagina, trova la linea con il link e copiala.
  14. Incollalo nella barra degli indirizzi e clicca su di esso. Nel modulo che appare, seleziona il server per l’autorizzazione. Se non hai ancora il tuo server, creane uno e poi torna a collegare il bot.

    Per saperne di più: Creare un server in Discord

  15. Controlla l’elenco di tutte le autorizzazioni e clicca su “Autorizza”.
  16. Non resta che confermare il captcha che appare sullo schermo.
  17. Apri il server Discord appropriato e assicurati che il bot sia nella lista dei membri. È ancora offline per ora, ma il lancio sarà disponibile dopo aver scritto il “corpo” del bot usando Python o JS, cosa che faremo dopo.

Scegliere l’ambiente di sviluppo

Prima di iniziare a lavorare con il codice nei linguaggi di programmazione sopra menzionati, specificate che avrete bisogno di installare un editor di testo o un ambiente di sviluppo speciale che supporti la sintassi Python o JavaScript (a seconda di quello che scegliete). Naturalmente potete usare semplicemente Notepad, ma non è comodo come i programmi specializzati. Date un’occhiata alle panoramiche ai seguenti link per scegliere il software di cui avete bisogno.

Per saperne di più:
Scegliere un ambiente di sviluppo per la programmazione
Editor di testo per Windows

Opzione 1: Python e libreria discord

Se sei nuovo ai linguaggi di programmazione o hai solo una conoscenza superficiale, creare un bot per Discord in Python è la scelta migliore. Questo linguaggio è facile da imparare, compatto e ha una sintassi logica, quindi è ideale per i principianti. Inoltre c’è un’enorme quantità di codice sorgente con vari comandi o bot già pronti, che nulla impedisce di copiare e utilizzare per i propri scopi. Nei seguenti passi, imparerete come creare un “framework” bot Python ed eseguirlo per testarlo.

Passo 1: installare Python e la libreria discord

Per impostazione predefinita, Windows non ha funzioni e utilità integrate progettate per lavorare con Python, quindi dovrete installarle separatamente, senza dimenticare la libreria di plugin di discord, che vi permetterà di interagire con utili funzioni e comandi legati esclusivamente a discord.

Vai al sito ufficiale di Python

  1. Usate il link qui sopra per andare al sito ufficiale di Python e cliccate sul pulsante per scaricare la sua ultima versione.
  2. Nella nuova pagina, cercate il programma di installazione per Windows e iniziate a scaricarlo.
  3. Aspettate che il download sia completato ed eseguite il programma di installazione.
  4. Puoi eseguire l’installazione senza alcuna modifica, ma assicurati di selezionare la casella “Add Python X.X to PATH” in modo che tutte le variabili d’ambiente siano aggiunte automaticamente e tu non abbia problemi a digitare i comandi in seguito.
  5. Aspettate che l’installazione sia completata e riavviate il computer, per sicurezza, in modo che le modifiche abbiano effetto.
  6. Aprite il “Prompt dei comandi” in un modo conveniente, per esempio, trovando l’applicazione nel menu “Start .
  7. Digita pip install discord e conferma la tua scelta premendo Invio.
  8. I file saranno scaricati e la console “eseguirà” le linee. Non chiudere la finestra prima che il download sia completato.
  9. Una volta che appare l’informazione “Installato con successo”, chiudete il “Prompt dei comandi” e andate avanti.

Se hai Python installato, ma il comando per aggiungere la libreria dei plugin non funziona, aggiorna il componente PIP, come descritto in un altro articolo sul nostro sito. Vi troverete anche le istruzioni su come cambiare le variabili d’ambiente se ciò non è avvenuto durante l’installazione.

Leggi tutto: Aggiornare PIP per Python

Passo 2: creare il dizionario dei bot

In questa opzione useremo un dizionario per il bot, che è un file di configurazione che memorizza i valori di token, prefisso e nome del bot in nomi diversi. Questo semplifica enormemente l’intero processo di scrittura del codice e non obbliga a ricordare i dati dell’applicazione ogni volta per inserirli in una riga.

  1. Iniziate lanciando IDLE cercando l’applicazione aggiunta attraverso il menu Start. Se hai scaricato un altro ambiente di sviluppo, aprilo e crea un nuovo progetto basato su Python.
  2. Dopo aver aperto la nuova finestra, chiamate il menu “File” e selezionate “New File”. Potete anche farlo con la combinazione di tasti Ctrl + N.
  3. Nella nuova finestra, che è destinata alla scrittura del codice, inserite il blocco

    settings = {
    'token': 'Il tuo token',
    'bot': 'Nome bot',
    'id': ID bot del cliente, senza virgolette,
    'prefix': 'Prefisso bot'
    }

  4. Ora devi trovare l’informazione per sostituirla nel dizionario. Per prima cosa dovete trovare il Client ID dell’applicazione sul sito web dello sviluppatore. Copiala e sostituiscila con la stringa corrispondente.
  5. Richiama il menu e vai al ‘Bot’.
  6. Copia il suo token unico cliccando sul pulsante dedicato.
  7. Incolla il token al posto dell’iscrizione, fai lo stesso con il nome del bot e il prefisso usato (il prefisso è necessario per invocare i comandi e viene sempre prima di essi, per esempio !play, e puoi sostituire il punto esclamativo con qualsiasi altro carattere).
  8. Una volta che tutte le informazioni sono state sostituite, richiamate il menu “File” e selezionate l’opzione “Salva con nome”.
  9. Create una cartella separata per i file del bot, nominatela come config e confermate il salvataggio.

Passo 3: Creare il corpo del bot

Affinché il bot fornisca funzionalità di base, ha bisogno di creare un “corpo” – il codice di base da eseguire e lavorare sul server. Avrai bisogno di un file separato, che puoi nominare come vuoi, ma assicurati di salvarlo nella stessa posizione del dizionario che hai creato prima.

  1. Nell’ambiente di sviluppo, aprite il menu “File” e create un nuovo file.
  2. Inserisci tre comandi lì, che sono progettati per importare le librerie installate e il file creato in precedenza:

    importa discord
    from discord.ext import commands
    from config import settings

  3. Aggiungere la linea bot = commands.Bot(command_prefix = settings['prefix']) # Poiché abbiamo specificato il prefisso nelle impostazioni, accediamo al dizionario con la chiave prefix.
  4. Il codice di base è il seguente:

    @bot.command() # Non passiamo l'argomento pass_context perché era necessario nelle vecchie versioni.
    async def hello(ctx): # Crea una funzione e passa l'argomento ctx.
    author = ctx.message.author # Dichiara la variabile author e scrivi lì le informazioni sull'autore.

    await ctx.send(f'Hello, {author.mention}!') # Emette un messaggio che menziona l'autore, facendo riferimento alla variabile author.

  5. Fate attenzione ai commenti dopo il segno "#" in modo da sapere cosa fa ogni linea.
  6. Il comando per eseguirlo assomiglia a questo: bot.run(settings['token']) # Accedi al dizionario delle impostazioni con il token, per ottenere il token.
  7. Una volta finito, apri di nuovo il menu familiare e procedi a salvare il file.
  8. Specifica un nome qualsiasi per esso e mettilo nella tua cartella di configurazione.

Poi vedrete il codice completo, che è stato descritto sopra, quindi se avete bisogno potete semplicemente copiarlo.

importa discord
from discord.ext import commands
from config import settings

bot = commands.Bot(command_prefix = settings['prefix'])

@bot.command() # Non passate l'argomento pass_context perché era necessario nelle vecchie versioni.
async def hello(ctx): # Crea una funzione e passa l'argomento ctx.
author = ctx.message.author # Dichiara la variabile author e scrivi lì le informazioni sull'autore.
await ctx.send(f'Hello, {author.mention}!') # Emette un messaggio che menziona l'autore accedendo alla variabile author.

bot.run(settings['token']) # Accede al dizionario delle impostazioni con il token, per ottenere il token

Inoltre è possibile utilizzare uno schema alternativo, sbarazzandosi del file dizionario e ottenendo un "corpo" leggermente diverso per il bot. Per favore decidete se questo codice è più adatto a voi. Le linee di token specificate dovranno essere modificate per voi.

importa discord
da discord.ext importa comandi

TOKEN = 'Il tuo token'
bot = commands.Bot(command_prefix='!')

@bot.command(pass_context=True) # permette argomenti
async def test(ctx, arg): # crea una funzione bot async
await ctx.send(arg) # rimanda l'argomento

bot.run(TOKEN)

Passo 4: eseguire il bot

Ora è possibile eseguire il bot per il test, che richiede il file master creato al punto 3. Compilatelo direttamente attraverso l'ambiente di sviluppo, o richiamate il "Prompt dei comandi" e digitate lì python bot.py, dove bot.py è il nome del file creato. Se il file non è stato trovato, specificare il suo percorso completo, per esempio python C:\Users\USER_NAME\bot.py.

Vai su Discord e controlla lo stato attuale del bot. Dovrebbe apparire nella lista dei membri sotto "Online" con un punto verde.

Usate l'open source o le vostre conoscenze per scrivere comandi per il bot o implementare altri compiti che dovrebbe eseguire. Per farlo, modificate il suo file principale o createne altri, collegando tutto in un unico progetto.

Opzione 2: JavaScript e discord.js

La prossima variante della creazione di un bot per Discord è usare JS e la libreria di plugin discord.js, che aggiunge tutti i componenti necessari per lavorare con i bot. Il principio differisce dalla variante precedente solo negli strumenti e nella differenza di sintassi del linguaggio di programmazione, ma rimane più o meno lo stesso.

Passo 1: installare Node.js e discord.js

Per estendere le funzionalità di JS e trasformarlo in un linguaggio di programmazione generale, la piattaforma Node.js, che si consiglia di installare prima. Per farlo, seguite il semplice algoritmo:

Vai al sito ufficiale di Node.js

  1. Aprite la pagina di Node.js su internet e selezionate l'ultima versione consigliata da scaricare.
  2. Aspettate di ricevere il file eseguibile ed eseguitelo.
  3. Segui le istruzioni sullo schermo, completa l'installazione e riavvia il tuo computer.
  4. Aprite "Start" e attraverso una ricerca cercate l'applicazione classica "linea di comando".
  5. Lì, digitate il comando npm init e attivatelo premendo Invio.
  6. Crea un pacchetto standard con informazioni personalizzate premendo Invio dopo aver inserito ogni parametro, o lascia tutto come predefinito.
  7. Quando tutti i parametri del pacchetto sono impostati, si otterrà un avviso, che è necessario confermare premendo nuovamente Enter.
  8. Inserisci il comando npm install per installare i componenti standard mancanti.
  9. Aspettate che il loro download sia completato e che appaia la riga di input.
  10. Scrivi npm install discord.js.
  11. Una volta eseguito anche questo comando, aprite la vostra cartella utente e assicuratevi di aver creato i file del pacchetto JSON.

Passo 2: lavorare con i file bot

Consideriamo tutti i passi relativi ai file bot e al codice del programma in un unico passo, poiché non ha senso dividerli in diversi. Avrete bisogno di tre file di base in cui dovrebbero essere incluse tutte le funzioni necessarie: uno per la configurazione del bot, un altro per il "corpo", e un terzo file che memorizza la lista dei comandi che avete aggiunto.

  1. Per prima cosa, create i file "bot.js" e " config .json" nella stessa directory.
  2. Aprite "config.json" tramite un editor di testo o un ambiente di sviluppo e aggiungete delle linee come questa:

    {
    "token" : "your_token",
    "prefix" : "your_prefix"
    }

    Di conseguenza, sostituite le espressioni tra doppi apici con il token unico del bot e il prefisso preferito.

  3. Aprite il file "bot.js" per modificarlo (a proposito, il suo nome può essere qualsiasi cosa). Inserite qui questo blocco di codice.

    const Discord = require('discord.js'); // Collega la libreria discord.js
    const robot = new Discord.Client(); // Dichiara che robot è un bot
    const comms = require("./comms.js"); // Collega il file dei comandi bot
    const fs = require('fs'); // Collega il file system nativo node.js
    let config = require('./config.json'); // collega il file con parametri e informazioni
    let token = config.token; // "tira" il token da esso
    let prefix = config.prefix; // "tira" il prefisso da esso

    robot.on("ready", function() {
    /* Al successo del lancio, il messaggio "[nome del bot] lanciato!" apparirà nella console. */
    console.log(robot.user.username + " launched!");
    });

    robot.on('message', (msg) => { // Risposta ai messaggi
    if (msg.author.username != robot.user.username && msg.author.discriminator != robot.user.discriminator) {
    var comm = msg.content.trim() + ";
    var comm_name = comm.slice(0, comm.indexOf(" "));
    var messArr = comm.split(" ");
    for (comm_count in comms.comms) {
    var comm2 = prefix + comms.comms[comm_count].name;
    if (comm2 == comm_name) {
    comms.comms[comm_count].out(robot, msg, messArr);
    }
    }
    }
    })

    robot.login(token); // Autorizza il bot

    Leggete i commenti alle linee che vengono dopo gli slash ("//") per capire da soli lo scopo di ciascuno.

  4. Creare un terzo file "comms.js", che memorizzerà tutti i comandi necessari.
  5. In esso inserire il blocco principale, che sarà ampliato in futuro:

    const config = require('./config.json'); // Collega il file con parametri e informazioni
    const Discord = require('discord.js'); // Collega la libreria discord.js
    const prefix = config.prefix; // "tira" il prefisso

    // Comandi //

    function test(robot, mess, args) {
    mess.channel.send('Test!')
    }

    // Lista dei comandi //

    var comms_list = [{
    name: "test",
    out: test,
    about: "Test command"
    }];

    // Name - nome del comando a cui il bot reagirà
    // Out - nome della funzione con il comando
    // About - descrizione del comando

    module.exports.comms = comms_list;

Per lavorare ulteriormente con i comandi è sufficiente dichiarare le loro funzioni e aggiungere la lista con i blocchi di codice corrispondenti. Nell'esempio sopra, il file "comms.js" si presenta così:

const config = require('./config.json');
const Discord = require('discord.js');
const prefix = config.prefix;
const versions = config.versions;

//comandi //

function test(robot, mess, args) {
mess.channel.send("Test!")
}

function hello(robot, mess, args) {
mess.reply("Hello!")
}

// elenco di comandi //

var comms_list = [{
nome: "test",
out: test,
about: "test command"
},
{
nome: "hello",
out: hello,
about: "hello command!"
}
}

module.exports.comms = comms_list;

Passo 3: eseguire il bot

I primi passi con il bot JavaScript sono completi, il che significa che potete eseguirlo e controllare le sue prestazioni. Per fare questo, è necessario fare quanto segue:

  1. Aprite il menu "Start" tramite ricerca e cercate "Prompt dei comandi" ed eseguitelo.
  2. Scrivi node bot.js, dove bot.js è il nome del file di codice principale del bot. Se non è nella tua cartella home, specifica il percorso completo del file, o naviga prima verso la posizione usando il comando cd.

Esempi di comandi utili

Per concludere questa opzione, parliamo brevemente di due comandi utili che possono tornare utili quando si imposta il bot. Possono essere usati come test, quando il progetto è ancora in sviluppo. Il primo comando - ! clear - cancella il numero specificato di messaggi nella chat. Il suo codice appare come segue:

const arggs = mess.content.split(' ').slice(1); // Tutti gli argomenti dietro il nome del comando con prefisso
const amount = arggs.join(' '); // Numero di messaggi da cancellare
if (!amount) return mess.channel.send('Non hai specificato quanti messaggi cancellare!'); // Controlla se il parametro number è impostato
if (isNaN(amount)) return mess.channel.send('Questo non è un numero!'); // Controlla se l'input dell'utente è un numero

if (amount > 100) return mess.channel.send('Non puoi cancellare 100 messaggi alla volta'); // Controlla se l'input dell'utente è un numero maggiore di 100
if (amount {
mess.channel.bulkDelete(messages)
mess.channel.send(` Deleted ${amount} messages!`)
})
};
delete_messages(); // Chiama la funzione asincrona

Il secondo comando è per lanciare una moneta e si attiva digitando !heads_or_tails nella chat. Il codice qui non è così complesso perché c'è poca azione e il bot deve solo rispondere a una richiesta senza un enorme numero di variabili.

mess.channel.send('coin tossed...')

var random = Math.floor(Math.random() * 4) + 1; // Dichiara la variabile casuale - calcolerà un numero casuale da 1 a 3

if (random === 1) { // Se random === 1, allora l'aquila viene eliminata.
mess.channel.send(':full_moon: Heads!')
} else if (random === 2) { // Se il numero 2 è calcolato, allora croce cadrà.
mess.channel.send(':new_moon: Tails!')
} else if (random === 3) { // Se viene calcolato il numero 3, la moneta cade croce.
mess.channel.send(':last_quarter_moon: La moneta è caduta con un bordo!')
}

Puoi trovare altri comandi utili che vuoi includere nel tuo bot sul web, ma avrai comunque bisogno di una conoscenza avanzata di JavaScript o Python per lavorarci, in modo da poter correggere i bug o modificare il codice a tuo piacimento.