Bot Discord en Python : apprenez à créer votre propre bot !

Posséder son propre serveur Discord est parfois synonyme de beaucoup d’efforts, raison pour laquelle les bots qui gèrent les fonctions administratives sont appréciés. Un tel bot peut être créé facilement au moyen de la bibliothèque Python discord.py et de connaissances basiques en Python.

Créer son propre bot Discord en Python étape par étape

Avant de pouvoir débuter la programmation de votre bot, vous devez créer un bot Discord. Pour ce faire, vous pouvez créer votre propre application sous Discord. Plus rien ne s’opposera alors à votre bot Discord ! Le code dont vous avez besoin pour votre bot Discord dépend des tâches qui devront être automatisées. Dans ces instructions, le bot présenté doit ajouter des rôles dans un serveur Discord.

Étape 1 : installer discord.py

Lors de la création de votre bot, vous utilisez en priorité la bibliothèque Python discord.py, raison pour laquelle vous devez ensuite l’installer sur votre système. Comme toujours dans Python, l’installation est exécutée sous pip. Sous Windows, la commande de terminal requise est la suivante :

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

Étape 2 : créer un document Python

Créez un nouveau document Python dans lequel vous codez votre bot. Pour votre fichier Python, vous pouvez utiliser divers éditeurs de code ou un environnement de développement intégré (EDI), comme Pycharm.

Étape 3 : établir la connexion à Discord

Importez ensuite la bibliothèque Discord dans votre document Python et saisissez le jeton du bot que vous avez reçu pendant l’enregistrement de votre bot Discord sur le site du développeur Discord. Pour ce faire, remplacez le paramètre fictif par votre jeton de bot individuel :

import discord
TOKEN = paramètre_fictif_jeton
python

Il faut que la bibliothèque interagisse avec l’API de Discord. Afin de pouvoir vous connecter à Discord, une instance de l’objet client est également requise. Utilisez le code suivant pour créer cette dernière :

client = discord.Client()
python

Étape 4 : contrôler la bonne connexion

L’étape suivante consiste à intégrer une méthode asynchrone dans votre document Python, qui vérifie si la connexion de votre bot au serveur Discord a correctement fonctionné. Dans ce but, réagissez à l’évènement « on_ready » défini dans l’API de discord.py. Pour que votre fonction agisse comme gestionnaire d’évènement, utilisez le décorateur de fonction Python « @client.event ».

@client.event
async def on_ready():
    print(f'{client.user} est connecté au serveur suivant :\n')
    for server in client.guilds:
        print(f'{server.name}(id: {server.id})')
python
Note

Lors de la programmation du bot Discord, des fonctions asynchrones sont souvent utilisées. Cela a pour effet que la fonction est exécutée dans un thread dédié dissocié du thread principal. Ainsi, le thread principal n’est pas bloqué et les tâches du bot peuvent être exécutées parallèlement.

Étape 5 : ajouter une fonctionnalité à votre bot

L’API de discord.py définit un évènement qui vous aide à exécuter la fonctionnalité de votre bot, l’évènement « on_message ». Cet évènement sera alors toujours déclenché lorsque votre bot Discord recevra un message. Une méthode qui traite cet évènement doit ensuite vérifier de quel expéditeur provient le message, puis exécuter la fonctionnalité souhaitée, l’ajout de rôle dans notre cas.

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('!add_role'):
        # Déterminer le nom des rôles
        role_name = message.content.split(' ')[1]
        # Trouver le rôle Discord correspondant
        role = discord.utils.get(message.guild.roles, name=role_name)
        # Vérifier que le rôle existe
        if role is None:
            await message.channel.send(f'Le rôle "{role_name}" n’existe pas.)
            return
        # Assignation du rôle
        await message.author.add_roles(role)
        await message.channel.send(f'Le rôle "{role_name}" a été ajouté à {message.author}.')

La fonction vérifie ensuite si le message reçu provient du bot Discord lui-même. Si c’est le cas, la fonction est quittée avec l’instruction « return ».

Dans un deuxième temps, le contenu du message est analysé de manière approfondie. Si celui-ci débute par la chaîne de caractères « !add_role », le bot l’interprète comme une commande. Cela signifie que les utilisateurs du serveur doivent commencer les demandes au bot Discord avec la chaîne « !add_role ». Vous pouvez bien sûr utiliser n’importe quelle chaîne de caractères comme commande. Veillez toutefois à ce qu’il s’agisse d’une chaîne de caractères qui ne figure pas dans l’usage linguistique naturel.

Grâce à la fonction Python « split() », le nom du rôle souhaité est ensuite extrait d’un message interprété comme une commande correcte par le bot. Lors d’une nouvelle étape, le rôle correspondant est recherché sur votre serveur. Pour ce faire, vous pouvez exploiter l’objet « message » qui contient diverses informations sur votre serveur sous le point « message.guild ».

Si le rôle n’existe pas et retourne donc la valeur « None », un message d’erreur est généré et la fonction est quittée avec l’instruction « return ». Si le rôle existe, il est assigné en conséquence. La fonction « add_roles » présente dans la bibliothèque discord.py est alors utilisée. Elle est également définie par l’objet « message ».

Note

Votre bot Discord peut bien sûr exécuter n’importe quelle action. Vous pouvez donc créer des bots qui prennent en charge des tâches similaires, comme le bot populaire de chat et de modération MEE6, ou écrire votre propre bot de musique dans Discord. Nous avons opté pour un exemple facile que les débutants peuvent également comprendre.