Passer au contenu

Comment utiliser l'API Discord avec Python : un guide détaillé

L'API Discord offre aux développeurs une myriade d'opportunités pour s'intégrer à Discord, créer des robots, automatiser des serveurs et améliorer les communautés à l'aide de Python. Dans ce guide complet de plus de 2000 XNUMX mots, nous approfondirons les capacités, les prérequis, l'authentification, les points de terminaison, les bibliothèques, les exemples de projets et les techniques avancées de l'API Discord, vous fournissant ainsi tout ce que vous devez savoir pour commencer.

Pourquoi utiliser l'API Discord avec Python ?

Avant d'entrer dans le code, il convient de souligner certaines des choses intéressantes que les développeurs ont créées à l'aide de l'API Python Discord :

  • Mee6 – L'un des robots Discord les plus populaires avec plus de 250 millions d'utilisateurs. Fournit la modération, la mise à niveau, la musique, Twitch, Reddit et d'autres intégrations.

  • YAGPDB – Bot riche en fonctionnalités avec plus de 100 commandes pour la modération, la journalisation, la gestion des rôles, les rappels et bien plus encore. Utilisé sur plus de 600,000 XNUMX serveurs Discord.

  • discord.py – Bibliothèque de wrapper d’API de premier plan qui a activé la plupart des premiers robots Discord en Python. Offre des abstractions simples pour les robots et les intégrations.

  • disStream – Bot de streaming musical avec mise en file d’attente des listes de lecture, prise en charge YouTube/Twitch et filtres sonores comme l’amplification des basses.

  • discordbot.py – Bot tirant parti de l’apprentissage automatique pour la modération automatisée du contenu toxique et du spam. Présente les intégrations d'IA.

  • discorde-feedback – Bot de commentaires clients permettant aux utilisateurs de soumettre facilement des avis, des notes et des commentaires via Discord DM.

Et ce ne sont là que quelques exemples : les développeurs ont intégré Discord de manière créative avec des plateformes allant de Reddit et GitHub à des applications comme Spotify en utilisant la flexibilité de Python.

Conditions préalables à l'utilisation de l'API Discord

Avant de vous lancer dans le codage, vous souhaiterez aborder ces étapes préalables :

Créer un compte Discord

  • Il est évidemment nécessaire d'avoir un compte Discord – inscrivez-vous gratuitement sur en désaccord.com si vous n'en avez pas.

Créer un serveur Discord

  • Créez un serveur dans Discord pour les tests. Cela vous donne un accès administrateur complet au lieu de compter sur un autre serveur.

  • Pour les robots publics/de production, vous souhaiterez plus tard générer des liens d'invitation à ajouter à d'autres serveurs.

Activer le mode développeur

  • Dans Discord, accédez à Paramètres utilisateur > Avancé > Mode développeur pour débloquer des options supplémentaires.

Installer Python

  • Avoir Python installé et prêt à coder. L'API Discord prend en charge Python 3.8 ou supérieur.

  • Configurez éventuellement un environnement virtuel pour isoler les dépendances.

Obtention des informations d'identification de l'API Discord

Pour effectuer des appels API, nous devons générer des informations d'identification :

Créer une application Discord

Créer un compte de robot

  • Sous l'onglet Bot de votre application, ajoutez un nouveau compte de bot.

  • Vous pouvez personnaliser le nom d'utilisateur, l'avatar, etc.

Copiez le jeton

  • Révélez et copiez le jeton du bot sous l'onglet Bot – il est utilisé pour authentifier les requêtes API.

  • Gardez-le en sécurité comme un mot de passe. Toute personne possédant le jeton peut contrôler votre bot.

Obtenir les identifiants des chaînes

  • Sous votre serveur Discord, faites un clic droit sur une chaîne et sélectionnez « Copier l'ID » pour obtenir l'ID de la chaîne.

  • Nous utiliserons les identifiants de canal pour spécifier où envoyer les messages.

Authentification avec l'API Discord

Avec le jeton et les identifiants de canal, nous pouvons désormais nous authentifier. Il existe deux approches :

Jetons de robots

  • Utilisé pour les comptes de robots pour s'authentifier avec toutes les autorisations.

  • Passez le jeton dans le Authorization en-tête:

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

Jetons utilisateur

  • Peut être utilisé pour les comptes d'utilisateurs mais dispose d'autorisations limitées.

  • Généré sous l'onglet OAuth2 de votre application de développement Discord.

  • Authentifiez-vous de la même manière :

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

Les jetons de bot sont plus courants pour un accès complet à l'API. Les jetons utilisateur permettent d'interagir au nom de l'utilisateur.

Points de terminaison courants de l’API Discord

L'API Discord expose un certain nombre de points de terminaison pour différentes entités telles que les canaux, les messages, les utilisateurs, etc.

Certains paramètres courants incluent :

  • Canaux - /channels/{channel.id}
  • Mes Messages - /channels/{channel.id}/messages
  • Réactions - /channels/{channel.id}/messages/{message.id}/reactions
  • Guildes - /guilds/{guild.id}
  • Membres - /guilds/{guild.id}/members

Nous effectuons des opérations telles que l'envoi de messages en effectuant des requêtes à ces points de terminaison.

Bibliothèques de wrapper d'API Discord

Bien que nous puissions appeler directement l'API brute, les bibliothèques de wrapper Python peuvent simplifier les choses :

  • discord.py – La bibliothèque la plus populaire avec une conception intuitive orientée objet.
  • serpent – Un fork de discord.py mis à jour pour les dernières modifications de l'API.
  • hikari – Wrapper axé sur les performances et la vitesse.
  • suivantcord – Wrapper API asynchrone conçu pour Python 3.10+.

Ceux-ci fournissent des abstractions simples pour les robots, les commandes, les événements, etc., permettant ainsi d'économiser du temps de développement par rapport aux requêtes brutes.

Envoi de messages

Voyons un peu de code pour envoyer un message en utilisant le /channels/{channel.id}/messages point final:

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)

Nous utilisons une requête POST avec le content charge utile du corps pour envoyer notre message.

Récupération de messages

Pour récupérer les messages, nous obtenons du même point de terminaison et analysons la réponse :

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

json_data = response.json()

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

La réponse contient un tableau d’objets de message que nous pouvons parcourir.

Modification des messages

Pour modifier un message, nous avons besoin du message.id value et utilisez une requête 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)

Réagir aux messages

Nous pouvons réagir en utilisant le /reactions/{emoji}/@me point final:

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

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

Cela ajoute une réaction positive au message du bot.

Supprimer des messages

Enfin, nous pouvons supprimer avec une requête DELETE :

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

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

Ce qui précède devrait vous donner un bon aperçu des opérations de messagerie courantes. Parlons maintenant de l'utilisation de l'API WebSocket.

Tirer parti de l'API WebSocket

L'API Discord propose deux options de connectivité :

API REST – Utilisé pour la plupart des opérations comme l’envoi de messages.

API WebSocket – Pour écouter des événements en temps réel comme des messages.

Les WebSockets permettent de créer des robots événementiels qui réagissent aux événements en direct plutôt que d'interroger l'API REST.

Par exemple, voici un simple gestionnaire d'événements 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‘)

Cela répond immédiatement aux messages au lieu d'attendre un retour d'appel API.

Gestion des erreurs d'API

Lors de l'appel de l'API, nous devons gérer les erreurs avec élégance :

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

Certaines erreurs courantes incluent :

  • 50001 – Accès manquant à la ressource
  • 50035 – Corps de la requête invalide
  • 429 – Tarif limité

Voir le docs pour plus de détails sur les erreurs.

Construire un robot Discord en Python

Passons en revue un exemple de bot pour présenter les fonctionnalités de base :

Caractéristiques du robot :

  • Envoyer un message d'accueil au démarrage
  • Répondre aux messages contenant "aide"
  • Supprimer les messages contenant des mots interdits
  • Ajouter des réponses emoji de réaction
  • Répondre avec des images/émojis
# 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)

Cela présente un bot Discord simple mais fonctionnel en Python répondant aux événements et aux commandes.

Trucs et astuces avancés de l’API Discord

Complétons ce guide avec quelques conseils de pro :

  • Utilisez le scraping de membres avec LISTENER les intentions d'obtenir des dates d'adhésion, d'améliorer le statut, etc. qui ne figurent pas dans les données par défaut.

  • Tirez parti du traitement du langage naturel et de l'IA comme TensorFlow pour une modération automatisée basée sur la sémantique des messages par rapport aux mots-clés.

  • Planifiez des publicités lucratives, des annonces, etc. à l'aide de tâches cron ou de planificateurs comme APScheduler pour un timing optimal.

  • Implémentez une logique personnalisée protégeant votre bot contre les abus, comme la limitation du débit des utilisateurs individuels.

  • Créez un tableau de bord Web avec Flask ou FastAPI pour contrôler votre bot via HTTP plutôt que simplement Discord.

  • Utilisez le multithreading pour paralléliser les tâches gourmandes en calcul, comme la génération de rapports d'analyse.

  • Créez des fonctions d'assistance et des abstractions autour des appels d'API que vous utilisez le plus souvent.

Le piratage de certaines de ces fonctionnalités plus avancées peut vraiment distinguer votre bot de la foule.

Réflexions finales sur l'API Discord

L'API Discord offre d'excellentes opportunités pour créer des robots et des outils qui améliorent l'expérience Discord pour les communautés et les serveurs. Associés à la polyvalence de Python, les développeurs disposent d'une base incroyable pour apporter des intégrations créatives et de l'automatisation aux plus de 100 millions d'utilisateurs de Discord.

J'espère que cette analyse approfondie de plus de 2000 XNUMX mots vous fournira les prérequis, l'authentification, les connaissances sur les points de terminaison, les exemples et les techniques nécessaires pour commencer à tirer parti de l'API Discord dans vos propres projets. Les communautés utilisant vos créations vous remercieront !

Quelques ressources finales qui valent la peine d’être explorées pendant que vous poursuivez votre voyage :

Maintenant, allez-y et codez quelque chose de génial ! La communauté Python Discord a hâte de voir ce que vous construisez.

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *