Salta al contenuto

Come utilizzare l'API Discord con Python: una guida approfondita

L'API Discord offre agli sviluppatori una miriade di opportunità per integrarsi con Discord, creare bot, automatizzare server e migliorare le comunità utilizzando Python. In questa guida completa di oltre 2000 parole, approfondiremo le funzionalità, i prerequisiti, l'autenticazione, gli endpoint, le librerie, i progetti di esempio e le tecniche avanzate dell'API Discord, fornendoti tutto ciò che devi sapere per iniziare.

Perché utilizzare l'API Discord con Python?

Prima di approfondire il codice, vale la pena evidenziare alcune delle cose interessanti che gli sviluppatori hanno creato utilizzando l'API Python Discord:

  • Mee6 – Uno dei bot Discord più popolari con oltre 250 milioni di utenti. Fornisce moderazione, livellamento, musica, Twitch, Reddit e altre integrazioni.

  • YAGPDB – Bot ricco di funzionalità con oltre 100 comandi per moderazione, registrazione, gestione dei ruoli, promemoria e altro ancora. Utilizzato su oltre 600,000 server Discord.

  • discordia.py – Importante libreria wrapper API che ha abilitato molti dei primi bot Discord in Python. Offre semplici astrazioni per bot e integrazioni.

  • disStream – Bot per lo streaming musicale con coda di playlist, supporto YouTube/Twitch e filtri audio come l'amplificazione dei bassi.

  • discordbot.py – Bot che sfrutta l’apprendimento automatico per la moderazione automatizzata di contenuti tossici e spam. Presenta le integrazioni AI.

  • feedback di discordanza – Bot di feedback dei clienti che consente agli utenti di inviare comodamente recensioni, valutazioni e feedback tramite Discord DM.

E questi sono solo alcuni esempi: gli sviluppatori hanno integrato Discord in modo creativo con piattaforme che vanno da Reddit e GitHub ad app come Spotify utilizzando la flessibilità di Python.

Prerequisiti per l'utilizzo dell'API Discord

Prima di immergerti in qualsiasi codifica, ti consigliamo di coprire questi passaggi prerequisiti:

Crea un account Discord

  • Ovviamente è necessario un account Discord: iscriviti gratuitamente su disaccordo.com se non ne hai uno.

Crea un server Discord

  • Crea un server in Discord per i test. Questo ti dà accesso amministrativo completo invece di fare affidamento su un altro server.

  • Per i bot pubblici/di produzione, in seguito vorrai generare collegamenti di invito da aggiungere ad altri server.

Abilita la modalità sviluppatore

  • In Discord, vai su Impostazioni utente > Avanzate > Modalità sviluppatore per sbloccare opzioni aggiuntive.

Installa Python

  • Avere Python installato e pronto per la codifica. L'API Discord supporta Python 3.8 o versioni successive.

  • Facoltativamente, configura un ambiente virtuale per isolare le dipendenze.

Ottenere le credenziali API Discord

Per effettuare chiamate API, dobbiamo generare credenziali:

Crea un'applicazione Discord

Crea un account Bot

  • Nella scheda Bot della tua applicazione, aggiungi un nuovo account bot.

  • Puoi personalizzare il nome utente, l'avatar ecc.

Copia il gettone

  • Rivela e copia il token del bot nella scheda Bot: viene utilizzato per autenticare le richieste API.

  • Mantienilo sicuro come una password. Chiunque abbia il token può controllare il tuo bot.

Ottieni gli ID canale

  • Sotto il tuo server Discord, fai clic con il pulsante destro del mouse su un canale e seleziona "Copia ID" per ottenere l'ID del canale.

  • Utilizzeremo gli ID canale per specificare dove inviare i messaggi.

Autenticazione con l'API Discord

Con il token e gli ID canale, ora possiamo autenticarci. Esistono due approcci:

Gettoni bot

  • Utilizzato per l'autenticazione degli account bot con autorizzazioni complete.

  • Passa il token nel file Authorization intestazione:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

Token utente

  • Può essere utilizzato per gli account utente ma ha autorizzazioni limitate.

  • Generato nella scheda OAuth2 nell'app di sviluppo Discord.

  • Autenticarsi in modo simile:

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

I token bot sono più comuni per l'accesso completo all'API. I token utente consentono di interagire per conto dell'utente.

Endpoint API Discord comuni

L'API Discord espone una serie di endpoint per diverse entità come canali, messaggi, utenti ecc.

Alcuni endpoint comuni includono:

  • Canali - /channels/{channel.id}
  • Messaggi - /channels/{channel.id}/messages
  • Reazioni - /channels/{channel.id}/messages/{message.id}/reactions
  • Gilde - /guilds/{guild.id}
  • Utenti - /guilds/{guild.id}/members

Eseguiamo operazioni come l'invio di messaggi effettuando richieste a questi endpoint.

Librerie wrapper API Discord

Sebbene possiamo chiamare direttamente l'API grezza, le librerie wrapper Python possono semplificare le cose:

  • discordia.py – La libreria più popolare con un design intuitivo orientato agli oggetti.
  • disserpe – Un fork di discord.py aggiornato per le ultime modifiche API.
  • hikari – Avvolgitore focalizzato sulle prestazioni e focalizzato sulla velocità.
  • nextcord – Wrapper API asincrono creato per Python 3.10+.

Questi forniscono semplici astrazioni per bot, comandi, eventi, ecc., risparmiando tempo di sviluppo rispetto alle richieste grezze.

Invio di messaggi

Vediamo un po' di codice per inviare un messaggio utilizzando il file /channels/{channel.id}/messages punto finale:

import requests

url = "https://discord.com/api/v9/channels/1234567890/messages" 

data = {"content": "Hello world!"}

headers = {
    "Authorization": "Bot OTI..." 
}

response = requests.post(url, headers=headers, json=data)

Usiamo una richiesta POST con il file content carico utile del corpo per inviare il nostro messaggio.

Recupero dei messaggi

Per recuperare i messaggi, OTTENIAMO dallo stesso endpoint e analizziamo la risposta:

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

La risposta contiene una serie di oggetti messaggio su cui possiamo scorrere.

Modifica dei messaggi

Per modificare un messaggio, abbiamo bisogno del file message.id valore e utilizzare una richiesta PATCH:

message_id = "876543234567891234"

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

data = {"content": "New message contents!"}

response = requests.patch(url, headers=headers, json=data)

Reagire ai messaggi

Possiamo reagire usando il /reactions/{emoji}/@me punto finale:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

Ciò aggiunge una reazione positiva al messaggio del bot.

Eliminazione di messaggi

Infine possiamo eliminare con una richiesta DELETE:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

Quanto sopra dovrebbe fornire una buona panoramica delle operazioni di messaggistica comuni. Ora parliamo di come lavorare con l'API WebSocket.

Sfruttare l'API WebSocket

L'API Discord fornisce due opzioni di connettività:

API REST – Utilizzato per la maggior parte delle operazioni come l'invio di messaggi.

API WebSocket – Per ascoltare eventi in tempo reale come i messaggi.

I WebSocket consentono di creare bot basati su eventi che reagiscono a eventi in tempo reale anziché eseguire il polling dell'API REST.

Ad esempio, ecco un semplice gestore di eventi on_message:

import discord

class MyBot(discord.Client):

    async def on_ready(self):
       print(‘Logged in as {0}!‘.format(self.user))

    async def on_message(self, message):
        print(‘Message from {0.author}: {0.content}‘.format(message))

bot = MyBot()
bot.run(‘token‘)

Questo risponde immediatamente ai messaggi invece di attendere la risposta di una chiamata API.

Gestione degli errori API

Quando chiamiamo l'API, dovremmo gestire gli errori con garbo:

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

Alcuni errori comuni includono:

  • 50001 – Accesso mancante alla risorsa
  • 50035 – Corpo della richiesta non valido
  • 429 – Tariffa limitata

Vedere la docs per i dettagli sugli errori.

Costruire un bot Discord in Python

Esaminiamo un bot di esempio per mostrare le funzionalità principali:

Caratteristiche del bot:

  • Invia saluto all'avvio
  • Rispondi ai messaggi contenenti "aiuto"
  • Elimina i messaggi con parole vietate
  • Aggiungi risposte emoji di reazione
  • Rispondi con immagini/emoji
# Imports and initialization

import os
import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)

intents = discord.Intents.default()
intents.message_content = True 
client = discord.Client(intents=intents)

# Event handlers

@client.event
async def on_ready():
   channel = client.get_channel(1234567890)  
   await channel.send("I‘m alive!")

@client.event
async def on_message(message):

   if "help" in message.content:
      await message.channel.send("Contact our support team for assistance!")

   elif check_for_banned_words(message.content):
      await message.delete()

   # Reactions   
   emojis = ["👍", "❤️"]

   for emoji in emojis: 
       await message.add_reaction(emoji)

# Run bot             
client.run(TOKEN)

Questo mostra un bot Discord semplice ma funzionale in Python che risponde a eventi e comandi.

Suggerimenti e trucchi avanzati per l'API Discord

Concludiamo questa guida con alcuni suggerimenti professionali:

  • Usa lo scraping dei membri con LISTENER intenti per ottenere date di iscrizione, stato di potenziamento ecc. che non sono nei dati predefiniti.

  • Sfrutta l'elaborazione del linguaggio naturale e l'intelligenza artificiale come TensorFlow per la moderazione automatizzata basata sulla semantica dei messaggi e sulle parole chiave.

  • Pianifica annunci redditizi, annunci ecc. utilizzando cron job o pianificatori come APScheduler per una tempistica ottimale.

  • Implementa una logica personalizzata che protegga il tuo bot da abusi come la limitazione della velocità dei singoli utenti.

  • Crea una dashboard web con Flask o FastAPI per controllare il tuo bot tramite HTTP anziché solo Discord.

  • Utilizza il multithreading per parallelizzare attività ad alta intensità di calcolo come la generazione di report di analisi.

  • Crea funzioni di supporto e astrazioni attorno alle chiamate API che usi più spesso.

Mettere insieme alcune di queste funzionalità più avanzate può davvero distinguere il tuo bot dalla massa.

Considerazioni finali sull'API Discord

L'API Discord offre fantastiche opportunità per creare bot e strumenti che migliorano l'esperienza Discord per comunità e server. Insieme alla versatilità di Python, gli sviluppatori hanno una base straordinaria per portare integrazioni creative e automazione agli oltre 100 milioni di utenti di Discord.

Spero che questo approfondimento di oltre 2000 parole ti fornisca i prerequisiti, l'autenticazione, la conoscenza degli endpoint, gli esempi e le tecniche necessarie per iniziare a sfruttare l'API Discord nei tuoi progetti. Le comunità che utilizzano le tue creazioni ti ringrazieranno!

Alcune risorse finali che vale la pena esplorare mentre continui il tuo viaggio:

Ora vai avanti e codifica qualcosa di fantastico! La community di Python Discord non vede l'ora di vedere cosa costruirai.

Partecipa alla conversazione

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *