Posséder son propre serveur Discord est parfois synonyme de beaucoup d’efforts, raison pour laquelle les bots qui gèrent les fonctions ad­mi­nis­tra­tives sont appréciés. Un tel bot peut être créé fa­ci­le­ment au moyen de la bi­blio­thèque Python discord.py et de con­nais­sances basiques en Python.

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

Avant de pouvoir débuter la pro­gram­ma­tion de votre bot, vous devez créer un bot Discord. Pour ce faire, vous pouvez créer votre propre ap­pli­ca­tion 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 au­to­ma­ti­sées. Dans ces ins­truc­tions, 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 bi­blio­thèque Python discord.py, raison pour laquelle vous devez ensuite l’installer sur votre système. Comme toujours dans Python, l’ins­tal­la­tion 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 en­vi­ron­ne­ment de dé­ve­lop­pe­ment intégré (EDI), comme Pycharm.

Étape 3 : établir la connexion à Discord

Importez ensuite la bi­blio­thèque Discord dans votre document Python et saisissez le jeton du bot que vous avez reçu pendant l’en­re­gis­tre­ment de votre bot Discord sur le site du dé­ve­lop­peur Discord. Pour ce faire, remplacez le paramètre fictif par votre jeton de bot in­di­vi­duel :

import discord
TOKEN = paramètre_fictif_jeton
python

Il faut que la bi­blio­thèque in­te­ra­gisse 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 asyn­chrone dans votre document Python, qui vérifie si la connexion de votre bot au serveur Discord a cor­rec­te­ment fonc­tionné. Dans ce but, réagissez à l’évènement « on_ready » défini dans l’API de discord.py. Pour que votre fonction agisse comme ges­tion­naire d’évènement, utilisez le dé­co­ra­teur 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 pro­gram­ma­tion du bot Discord, des fonctions asyn­chrones 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 pa­ral­lè­le­ment.

Étape 5 : ajouter une fonc­tion­na­lité à votre bot

L’API de discord.py définit un évènement qui vous aide à exécuter la fonc­tion­na­lité 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 ex­pé­di­teur provient le message, puis exécuter la fonc­tion­na­lité 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’ins­truc­tion « return ».

Dans un deuxième temps, le contenu du message est analysé de manière ap­pro­fon­die. Si celui-ci débute par la chaîne de ca­rac­tères « !add_role », le bot l’in­ter­prète comme une commande. Cela signifie que les uti­li­sa­teurs 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 ca­rac­tères comme commande. Veillez toutefois à ce qu’il s’agisse d’une chaîne de ca­rac­tères qui ne figure pas dans l’usage lin­guis­tique naturel.

Grâce à la fonction Python « split() », le nom du rôle souhaité est ensuite extrait d’un message in­ter­prété comme une commande correcte par le bot. Lors d’une nouvelle étape, le rôle cor­res­pon­dant est recherché sur votre serveur. Pour ce faire, vous pouvez exploiter l’objet « message » qui contient diverses in­for­ma­tions 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’ins­truc­tion « return ». Si le rôle existe, il est assigné en con­sé­quence. La fonction « add_roles » présente dans la bi­blio­thè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 si­mi­laires, comme le bot populaire de chat et de mo­dé­ra­tion MEE6, ou écrire votre propre bot de musique dans Discord. Nous avons opté pour un exemple facile que les débutants peuvent également com­prendre.

Aller au menu principal