Tutoriel Python : Créer un bot discord

Tutoriel Python : Créer un bot discord

 

 

Table des matières

Introduction

  1. Bot : Définition
  2. L’application Discord

2.1. Installation de discord.py

2.2. Création d’une application Discord

  1. Création du serveur du bot (Guild)
  2. Ajouter le bot au serveur
  3. Coder le bot en Python

5.1. Démarrage du bot

5.2. Commandes de base

5.3. Ajouter des Paramètres

  1. Attente de réponse

Conclusion

Introduction

Python n’est pas seulement un langage de programmation basique et d’interaction avec les données, mais il permet aussi de créer des applications interactives telles que des bots qui sont des logiciels automatisés permettant d’interagir avec un serveur et exécuter des requêtes de clients. Dans ce tutoriel, vous allez découvrir ce qu’est un bot et comment le programmer en Python .

1. Bot : Définition

Un bot est une application informatique qui permet d’automatiser des tâches sur Internet. Généralement, les tâches établies par un bot sont plus performantes que celles effectuées par un humain.  Les bots ou abréviation de robot, sont très utilisés par des organisations afin de remplacer une tâche qui se répète et qu’un humain aurait effectuée plus lentement.

2. L’application Discord

Discord est une plateforme américaine qui permet de faire des échanges vocaux et textuels sur un serveur dans le but de créer des communautés. Elle est très utilisée par les gamers. Les utilisateurs de Discord peuvent communiquer avec des appels de tout type (Vocaux , vidéos ), ils peuvent aussi échanger des médias et fichiers dans des conversations privées .

2.1. Installation de discord.py 

La première étape est d’installer le package discord de Python, c’est un package qui offre des fonctionnalités qui facilitent l’utilisation de l’API Discord. Pour installer ce package, vous devez ouvrir la fenêtre de commande Anaconda prompt et taper la commande suivante :

Syntaxe :

pip install discord.py

Le package discord.py installe quelques exigences automatiquement si votre machine ne les contient pas au préalable. Après l’exécution de la commande ci-dessus vous devez avoir une sortie similaire à celle-là :

Résultat d’exécution :

Voila ! Maintenant vous avez accès à l’API de Discord. Nous allons à présent passer à l’étape suivante.

2.2. Création d’une application Discord 

Avant de commencer à coder votre application Discord en Python. Il faut tout d’abord créer un compte discord et créer votre première application.

Commencez par créer votre application sur discord et choisir le nom que vous désirez :

Voici à quoi ressemblera la page de votre application Discord :

Vous disposez d’un CLIENTID, une Public key et finalement des points d’interactions URL. Dans notre tutoriel, nous sommes intéressés par la création d’un bot donc nous irons directement à la section bot dans le menu :

Par la suite, nous cliquerons sur le bouton ‘Add bot’.  Une fenêtre automatique apparaitra pour vous demander d’associer un robot à votre bot, cliquez sur oui. Voilà, votre bot a été créé. Maintenant nous allons passer à la partie de la création du serveur ou ce que l’API appelle guild.

Comme vous pouvez le voir sur la page de  création de votre bot , il y a plusieurs paramètres à configurer, notamment:

Authtorization flow :

Ces paramètres contrôlent la gestion des paramètres et les autorisations de votre bot :



Les bots publics peuvent être ajoutés par n’importe qui. Au cas où vous les désactivez, vous pouvez en exclusivité ajouter ce bot à des serveurs. Le mode requires OAUTH2 Code Grant est coché quand votre application a besoin de portées multiples.

Priviled gateway Intents:

Généralement, il est difficile pour une application de maintenir le grand flux de données  à traiter à grande échelle. Gateway intents est l’outil qui traite ce problème, en raison de la sensibilité et la confidentialité des données des clients, quelques instances de passerelle  seront définies dans le mode privilégié. Dans notre cas, deux types d’accès peuvent être accordés :

Presence intent :

Si votre bot est programmé pour collecter des données de présence, vous aurez besoin de vérifier la case présence intent à fin de recevoir les données d’événement de présence.

Servers members intent :

Si votre bot suit les membres du serveur ou télécharge la liste complète des membres, vous auriez besoin de l’intention des membres du serveur pour recevoir les événements des membres et la liste de ces derniers.

3. Création du serveur du bot (Guild)

Après avoir configuré notre application bot et être rassuré que l’application est opérationnelle, nous allons créer un nouveau serveur sur discord afin de définir un environnement pour notre bot . Si vous avez déjà un serveur discord prêt, vous pouvez l’ajouter à ce dernier. Sinon il est très simple à créer, il suffit de cliquer sur le bouton à gauche :

Un menu apparaitra et vous indiquera qu’il faut nommer votre serveur. Le nom du serveur est un choix personnel mais nous vous conseillons de le nommer après votre application bot comme ça vous aurez un serveur dédié à son développement.

Voici le nouveau serveur que nous avons nommé serveur de bot :

À présent, nous devons ajouter notre application bot au serveur avant de commencer la partie du codage du bot.

4. Ajouter le bot au serveur

Afin de manipuler votre bot, vous devez l’ajouter à un serveur . C’est une étape facile à réaliser, il suffit de vous diriger à la section « OAuth2 » et suivre les instructions suivantes :

Une fois que nous sommes dans la section OAuth2, vous remarquerez qu’il y a un grand nombre de cases, cochez la case bot :

Une fois que vous cochez la case, une URL doit apparaître :

Copiez l’URL et collez-la dans votre navigateur. Ce lien permet à votre bot de rejoindre n’importe quel serveur que votre utilisateur a le droit de rejoindre en utilisant OAuth2. Si vous avez déjà ajouté des bots dans un serveur, cette étape devrait vous être familière. Pour ceux d’entre vous qui ne l’ont pas encore fait, lorsque vous cliquez sur cette URL, un menu similaire à celui-ci s’affiche :

Maintenant, sélectionnez le serveur que vous avez créé auparavant puis cliquez sur « Authorize ». Cela déposera le bot dans votre serveur ! Un message s’affichera et indiquera que le bot a rejoint votre serveur :

Vous verrez également votre bot dans la liste des utilisateurs à droite de l’interface de Discord :

 

Voila ! Votre bot est entré dans le serveur, on peut finalement commencer à coder un bot basique.

5. Coder le bot en Python 

5.1. Démarrage du bot

Nous allons commencer par démarrer notre bot :

Syntaxe :

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = "!", description = "Bot numéro 1")
@bot.event
async def on_ready():
print("Your Bot is ready!")
bot.run("Nzg0ODYzODk0ODQ1MjU5ODA2.X8vfdg.AOOV8RibPTSkMl4l6BkBlzSfKcI")



On commence par importer le module discord puis le module commands qui contient les différentes commandes du bot. La première ligne du code précise que toutes les commandes adressées à notre bot seront préfixées par « ! ».

La fonction on_ready() est un event_listener associé au bot Discord, elle est indiquée par @bot.event . Elle se produit lorsque le bot démarre dès que le fichier main.py est exécuté.

Résultat de l’exécution :

Pour être sûr que votre bot a bien démarré, rendez-vous sur votre plateforme Discord, vous verrez que votre bot est passé en mode en ligne.

5.2. Commandes de base

Après la création et le démarrage du bot , nous allons vous introduire à  quelques commandes du bot . En effet, l’objectif de cette partie est de rendre le bot capable de répondre à la commande «!Bonjour» par « Bonjour » et de donner les informations du serveur si on tape « !InfoServeur » .

On commence tout d’abord par définir la fonction de base on_ready() . Ensuite, on définit la fonction asynchrone Bonjour qui permettra au bot de répondre à la commande par Bonjour. Puis nous définissons une deuxième fonction qui nous donne les informations et descriptions  suivantes sur le serveur :

  • Le nombre de salons écrits.
  • La nombre de salons vocaux.
  • Le nombre de personnes connectées .

Syntaxe :

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = "!", description = "Bot de Mouna")
@bot.event
async def on_ready():
print("Ready !")
@bot.command()
async def Bonjour(ctx):
await ctx.send("Bonjour !")
@bot.command()
async def InfoServeur(ctx):
serveur = ctx.guild
nombreDeChainesTexte = len(serveur.text_channels)
nombreDeChainesVocale = len(serveur.voice_channels)
Description_du_serveur = serveur.description
Nombre_de_personnes = serveur.member_count
Nom_du_serveur = serveur.name
message = f"Le serveur **{Nom_du_serveur}** contient *{Nombre_de_personnes}* personnes ! \nLa description du serveur est {Description_du_serveur}. \nCe serveur possède {nombreDeChainesTexte} salons écrit et {nombreDeChainesVocale} salon vocaux."
await ctx.send(message)
bot.run("Nzg0ODYzODk0ODQ1MjU5ODA2.X8vfdg.AOOV8RibPTSkMl4l6BkBlzSfKcI") #Ceci est le token de mon bot. Changez le avec celui de votre bot

Résultat de l’exécution :

Après avoir exécuté votre fichier.ipynb sur la console, dirigez-vous sur votre bot et tapez les commandes suivantes :

  • !Bonjour
  • !InfoServeur

Le résultat devrait être similaire à celui-là :

5.3. Ajouter des Paramètres

Dans cette section du tutoriel, vous allez voir comment programmer des fonctions de type commandes pour votre Bot mais cette fois- ci l’appel de la commande sera accompagné de paramètres.

Les deux fonctions qu’on implémentera sont :

  • !dire (texte): Le bot retourne le texte donné en entrée.
  • !traduire_chinese (texte): Transforme les mots dans une représentation chinoise.

Syntaxe :

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = "!", description = "Bot de Titouan")
@bot.event
async def on_ready():
print("Your Bot is Ready !")
@bot.command()
async def dire(ctx, *message):
await ctx.send(" ".join(message))
@bot.command()
async def traduire_chinese(ctx, *text):
Caractere_chinois = "????????????????Q????V??Y?"
Texte_chinois = []
for word in text:
for char in word:
if char.isalpha():
index = ord(char) - ord("a")
transformed = Caractere_chinois[index]
Texte_chinois.append(transformed)
else:
Texte_chinois.append(char)
Texte_chinois.append(" ")
await ctx.send("".join(Texte_chinois))
bot.run("Nzg0ODYzODk0ODQ1MjU5ODA2.X8vfdg.AOOV8RibPTSkMl4l6BkBlzSfKcI")

 

Résultat de l’exécution :

6. Attente de réponse

Dans cette dernière partie, nous allons programmer une commande qui attend une réponse de l’utilisateur à propos de ce qu’il veut acheter .

On commence par importer les modules discord et commands comme toujours, on définit le préfixe de la commande puis la fonction basique on_ready(). Ensuite, on déclare la fonction asynchroneon_ready() qui demande à l’utilisateur ce qu’il veut acheter. Puis il attend une réponse de type checkbox. Si vous cliquez sur "?" le programme vous demandera de passer à la caisse sinon il vous informera que votre commande a bien été annulée.

Syntaxe :

import discord
from discord.ext import commands
bot = commands.Bot(command_prefix = "!", description = "Bot de Mouna")
@bot.event
async def on_ready():
print ("Your bot is Ready !")
@bot.command()
async def acheter(ctx):
await ctx.send("Entrer le nom du produit que vous voulez acheter")
def check_Message(message):
return message.author == ctx.message.author and ctx.message.channel == message.channel
try:
produit = await bot.wait_for("message", timeout = 10, check = check_Message)
except:
await ctx.send("Veuillez réitérer la commande.")
return
message = await ctx.send(f"La préparation de {produit.content} va commencer. Veuillez valider en réagissant avec ?. Sinon réagissez avec ?")
await message.add_reaction("?")
await message.add_reaction("?")
def checker_Emoji(reaction, user):
return ctx.message.author == user and message.id == reaction.message.id and (str(reaction.emoji) == "?" or str(reaction.emoji) == "?")
try:
reaction, user = await bot.wait_for("reaction_add", timeout = 10, check = checker_Emoji)
if reaction.emoji == "?":
await ctx.send("Passez à la caisse .")
else:
await ctx.send("Votre demande d'achat a bien été annulé.")
except:
await ctx.send("Votre demande d'achat bien été annulé.")
bot.run("Nzg0ODYzODk0ODQ1MjU5ODA2.X8vfdg.AOOV8RibPTSkMl4l6BkBlzSfKcI")



Résultat de l’exécution :

Nb : N’oubliez pas de changer le token dans la dernière commande de tous les exemples !

Conclusion 

Félicitations ! Vous êtes arrivés à la fin de ce tutoriel. Maintenant, vous avez appris comment créer un Bot Discord en Python. Vous êtes aussi capable de créer plusieurs fonctionnalités et outils qui permettront à des utilisateurs d’interagir avec votre bot.

 Grâce à ce que vous avez appris aujourd’hui, vous pouvez créer des applications bot qui vont être capables de répondre aux différents évènements d’utilisateurs.

En gros, dans ce tutoriel , vous savez la notion d’un discord , un bot et l’intérêt de la librairie discord.py , la création d’un bot dans le portail développeur de Discord et finalement comment gérer des évènements ainsi que des exemples d’applications concrètes!

Bon courage !

Tutoriel Python