Comment créer un Bot discord.py sur Replit ?
Comment coder un bot discord en Python avec discord.py sur Replit ?
Replit permet d’héberger votre bot gratuitement sans rien devoir installer.
Dans ce tutoriel, vous allez apprendre à coder des bots discord en Python. On va voir comment faire un bot qui répond à plusieurs commandes.
Avant ça, on va voir comment le déclarer sur le discord developer portal.
Et puis on va voir comment configurer tout ce dont on a besoin pour commencer.
Vous n’avez pas besoin d’un gros niveau en Python pour suivre ce tutoriel. Si vous voulez apprendre Python, j’ai un article pour apprendre Python.
Dans ce cours on va utiliser Replit qui est un site permet de coder dans le cloud.
Replit est gratuit, vous n’avez pas besoin de CB pour vous inscrire et vous ne devez rien installer. Replit permet aussi d’héberger des bots discord gratuitement donc ça va nous être utile pour faire tourner le bot discord en permanence.
Commençons a voir comment coder un bot discord en Python !
Comment créer un bot sur le Discord Developer Portal ?
Avant de coder un bot discord, il faut créer une application sur le Discord Developer Portal. Ce site est sert de panneau de configuration pour les applications et bots discord. Ensuite, il faut définir ses intents des intents et des permissions avant d’inviter le bot sur un serveur discord.
Une fois sur le site, cliquez sur New Application. Dans le popup qui vient de s’ouvrir, donnez un nom à votre bot, puis cochez la case pour accepter les conditions d’utilisations et appuyez sur le bouton Create pour créer votre bot.
Vous vous trouverez sur une sorte de panneau de configuration pour votre bot.
Sur cette page qui reprend toutes les informations de votre bot, vous pouvez lui fournir une image qui servira d’avatar à votre bot sur votre discord.
Vous pouvez aussi lui écrire une description et lui rajouter des tags pour configurer votre bot sur cette page.
Que sont les intents d’un bot discord ?
Ensuite, rendez-vous la page bot en cliquant sur le lien dans le menu de gauche.
C’est sur cette page qu’on va définir les intents.
Les intents sont des WebSockets qui écoutent plusieurs types d’événements pour une application Discord comme un bot. Il y a 3 types d’intents : “presence”, “server members” et “message content”. Pour suivre les bonnes pratiques, il est conseillé d’activer seulement le ou les intents nécessaires.
Les différents intents d’un bot discord :
- Presence intent est l’intent qui permet de recevoir les états d’un serveur Discord.
- Server members intent permet de voir les événements lies aux membres sur un serveur discord
- Message content intent permet d’écouter les événements lies aux messages sur un serveur discord
Pour le bot que je fais dans ce tutoriel je vais juste envoyer des messages avec des commandes donc j’ai juste besoin de cocher l’intent pour les messages.
Vous pouvez cocher les 2 autres intents si vous voulez aller plus loin avec votre bot.
Et vous pourrez toujours revenir sur cette page et changer ses intents si vous changez d’avis dans le futur.
Comment définir les permissions d’un bot discord ?
Maintenant qu’on a les intents, on va créer un lien pour inviter le bot sur votre serveur.
Rendez-vous dans OAuth2 et puis cliquez sur “Bot” pour permettre à votre application d’être un bot.
Et là un nouvel encart apparaît. Dedans, vous pouvez choisir les permissions pour votre bot.
Je vais juste choisir “Send messages”.
Et en bas de page, vous avec une URL qui a été générée en fonction des permissions que vous avez choisies.
Cette URL sert de lien d’invitation pour votre bot sur votre serveur discord.
Copiez là puis collez la dans votre navigateur.
Et la vous vous retrouvez sur une page qui vous demande sur quel serveur vous voulez installer votre bot.
💡 Vous ne pouvez ajouter un bot discord que sur un serveur sur lequel vous avez les permissions.
Choisissez le serveur sur lequel vous voulez inviter votre bot discord et appuyez sur Continuer.
Ensuite on voit quelles permissions le bot va avoir, si c’est ok appuyez sur le bouton Autoriser pour valider.
Et si tout s’est bien passer vous devriez voir une page qui vous dit que votre bot a bien été ajouté aà votre serveur 🎉
Appuyez sur le bouton pour vous rendre sur votre serveur discord.
Une fois sur votre serveur, vous verrez un nouveau membre, votre bot discord, mais il y a un problème … il est hors ligne.
Pour le passer en ligne on doit executer le code du bot et c’est ce qu’on va faire avec Replit !
Comment coder un Bot Discord sur Replit ?
Replit c’est donc un site qui permet de coder directement depuis votre navigateur. Vous pouvez l’utiliser gratuitement en vous rendant sur replit.com.
Une fois sur le site, créez un compte ou connectez-vous si vous avez deja un compte.
Et puis vous arriverez sur la page principale de replit.
Appuyez sur le bouton pour Create a repl créer un repl.
Choisissez Python et vous pouvez aussi donner un nom a votre projet, finalement appuyez sur le bouton Create pour créer votre repl.
Vous vous retrouvez sur une page pour écrire du code qui ressemble à un IDE.
Voyons l’interface ensemble.
En haut à gauche vous avez vos fichiers. (1)
En bas à gauche il y les fonctionnalités replit (2) dont une qu’on va utiliser juste après.
Et puis vous dans la partie centrale il y a moitié pour écrire du code (3) et une autre partie avec des onglets console et shell (4).
Et finalement il y a le bouton run qui va nous permettre de lancer le bot (5).
Avant de pouvoir commencer a coder votre bot discord, on doit récupérer une dernière chose sur Discord Developer Portal, le token de votre bot.
Rendez-vous dans la partie Bot et appuyez sur le bouton Reset token.
Vous devriez voir une longue chaîne de caractères, c’est votre token.
⚠️ Un token est comme une clé privée ou un super mot de passe, c’est un hash qui donne accès directement à votre bot. Il ne faut donc PAS le partager, ni le push sur github ou publiquement.
Copiez le et puis retournez sur replit.
Le plan gratuit de replit rend tout votre code public mais on peut quand mème sauver des données secrètes sans devoir payer en utilisant un des outils en bas à gauche de l’interface de Replit.
On ne peut pas coller le token dans le code car votre public.
Donc cliquez sur l’outil “Secrets” et dans la partie droite de l’interface, appuyez sur New Secret.
Dans la Key, clé, SECRET_KEY, choisissez un nom pour votre secret comme TOKEN_BOT_DISCORD
par exemple.
Dans le champs Value, collez votre token que vous avez récupéré sur le Discord Developer Portal.
Replit vous donne deux lignes de code que vous pouvez ajouter à votre fichier main.py
dans lequel on va coder le bot discord.
Et je vais juste changer le nom de variable my_secret
en token
.
On a enfin tout ce qu’il faut pour coder le bot 🤖 !
Comment coder un bot avec discord.py ?
Donc commençons par importer le module python pour les bots discord, qui s’appelle discord.py.
import discord
On va aussi avoir besoin de l’extension de discord.py pour créer des commandes.
import discord
from discord.ext import commands
Un autre avantage de replit c’est qu’il va installer les modules python qu’on importe automatiquement.
Donc pas besoin d’installer quoi que ce soit manuellement.
Continuons en declarant d’abord notre bot.
On doit lui passer un symbole qui va précéder nos commandes dans command_prefix, vous pouvez mettre le point d’exclamation.
Et puis si vous rappeler des intents que vous avez déclaré sur le site discord developer portal vous devez les remettre ici.
J’avais juste l’intent our les messages donc je vais créer une variables intents qui prend les intents par défaut et puis lui ajouter l’intent pour les messages.
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
Avant de continuer à écrire des commandes on va essayer de lancer le bot pour voir si tout fonctionne bien, donc en bas de votre fichier, faites bot.run
et passez lui votre token.
bot.run(token)
À ce point, vous devriez avoir un code qui ressemble à ça :
import os
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
# On va coder les commandes ici
token = os.environ['TOKEN_BOT_DISCORD']
bot.run(token)
Appuyez sur le bouton run et comme c’est la premiere fois, replit doit installer discord.py et le reste, ça va mettre quelques secondes mais ça ira bien plus vite les prochaines fois qu’on le lance.
Pour voir si ça a fonctionné, rendez-vous sur votre serveur discord et la votre bot devrait être en ligne !
💥 Sinon retournez sur replit et regardez le message d’erreur dans la console et réglez le.
On va pouvoir créer notre premiere fonction “bonjour” qui répond bonjour on fait point d’exclamation bonjour sur discord.
Pour ça faite une fonction bonjour avec def bonjour et cette fonction reçoit un paramètre context qu’on va appeler ctx.
def bonjour(ctx):
Pour que discord comprenne que c’est une commande on doit utiliser un decorateur ou plutot une fonction qui retourne un décorateur donc avant votre fonction en ajoutant @bot.command()
@bot.command()
def bonjour(ctx):
Aussi, notre fonction va être asynchrone, ce qui va permettre au bot de faire plusieurs choses en meme temps en utilisant des coroutine avec le mot cle await.
@bot.command()
async def bonjour(ctx):
Donc reprenons notre fonction qui va juste être une ligne de code qui va répondre bonjour sur discord et on peut faire ça avec la fonction send du context await :
@bot.command()
async def bonjour(ctx):
await ctx.send("Bonjour !")
On va aussi receper l’auteur du message qui est aussi dans le contexte en transformant notre string en f-string et en ajoutant ctx.author entre accolades.
@bot.command()
async def bonjour(ctx):
await ctx.send(f"Bonjour {ctx.author} !")
Faites stop et puis run pour relancer le bot, et puis rendez-vous sur discord et testez la commande point d’exclamation bonjour.
Si vous avez bien suivi le code, votre bot devrait vous prendre bonjour et puis votre nom d’utilisateur.
Bravo ! Vous avez votre premiere commande qui fonctionne !
À partir de maintenant vous pouvez faire d’autres commandes et leurs ajouter de la complexité pour faire des jeux, un système de moderation et bien plus, il n’y a pas vraiment de limites a ce que vous pouvez faire !
Mais continuons en faisant d’autres commandes, je vais faire une fonction ping qui répond pong.
@bot.command()
async def ping(ctx):
await ctx.send(f"Pong !")
Pareil pour une fonction pileouface
qui répondra pile ou face de manière aléatoire grace au module random de python avec (random.choice(['pile', 'face']))
.
@bot.command()
async def pileouface(ctx):
await ctx.send(random.choice(["Pile", "Face"]))
Pour que cça fonctionne, il faut importer random en haut de votre fichier : import random
.
Et puis on va faire une commande roll
qui lance un dé et renvoie un nombre de 1 a 6 avec random.randint(1, 6)
.
@bot.command()
async def roll(ctx):
await ctx.send(random.randint(1, 6))
Donc vous devriez avec un fichier main.py
qui ressemble à ça :
import os
import random
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.command()
async def bonjour(ctx):
await ctx.send(f"Bonjour {ctx.author} !")
@bot.command()
async def ping(ctx):
await ctx.send(f"Pong !")
@bot.command()
async def pileouface(ctx):
await ctx.send(random.choice(["Pile", "Face"]))
@bot.command()
async def roll(ctx):
await ctx.send(random.randint(1, 6))
token = os.environ['TOKEN_BOT_DISCORD']
bot.run(token)
Une fois que vous avez tout ça vous pouvez relancer le programme avec stop et puis run.
Et sur discord vous avez accès à ces commandes.
Il y aussi la commande !help
qui vient de base avec le bot.
Pour y acceder faites !help
, et la on voit qu’on a nos commandes listées.
Pour ajouter plus d’informations sur les commandes on peut lui passer des paramètres nommés dans le décorateur. Donc essayer ça avec la fonction roll
.
On va lui passer un paramètre help
dans lequel on met “Lance un dé cubique”
et puis en description
on va lui passer “Lance un dé et renvoie le résultat entre 1 et 6 compris”.
@bot.command(
help="Lance un dé cubique",
description="Lance un dé et renvoie le résultat entre 1 et 6 compris")
async def roll(ctx):
await ctx.send(random.randint(1, 6))
Relançons le bot et puis maintenant sur discord on peut faire !help
, on voit qu’on a une aide en plus pour roll “Lance un dé cubique” :
Et si on fait help roll on a aussi la description :
Aller plus loin avec votre bot discord !
Vous pouvez aussi suivre ce tutoriel en vidéo :
Si vous voulez aller plus loin avec votre bot discord j’ai un article complet sur le développement de bots discord dans lequel on va beaucoup plus loin, vous pouvez acceder à mon article avec ce lien.
Je m'appelle Thomas, et je code depuis plus de 20 ans. Depuis ma sortie de la première promotion de l'École 42, j'ai conçu et développé des centaines d'applications et de sites web. Sur ce blog, je partage avec vous les stratégies les plus efficaces pour maîtriser l'art de coder et progresser rapidement.