étape 1 : créer un bot discord
Pour créer un bot discord il vous faudra vous rendre dans le discord developer portal : https://discord.com/developers/applications
cliquez sur New application et donnez un nom à votre application :
Par la suite vous pouvez lui ajouter une photo de profil et une description :
rendez-vous ensuite dans l’onglet bot et transformez votre application en bot (je vous conseille aussi de cocher la case « message content intent » car sans cela, votre bot ne pourra réagir qu’aux commandes slash, et à aucun autre message)
Pour inviter votre bot sur un serveur, rendez-vous dans Oauth2 et cochez la case bot. Puis choisissez les permissions de votre bot et copiez le lien qui s’affiche en bas de la page. Ensuite, collez dans votre navigateur et choisissez le serveur où vous invitez votre bot.
On peut maintenant passer à la programmation.
Étape 2 : Mettre votre bot en ligne
Commencez par installer la dernière version de discord.py à l’aide de ses trois commandes que vous entrerez dans votre terminal cmd :
pip uninstall discord.py
puis:
pip install py-cord
puis:
pip install discord-py-slash-command
Au début de votre script python, importez vos bibliothèques :
import discord
from discord.ext import commands
import discord_slash
suivi de :
intents=discord.Intents.all()
intents.messages = True
bot = commands.Bot(command_prefix='!')
client = discord.Client(intents = intents)
guild = discord.Guild
messages = []
slash = discord_slash.SlashCommand(bot, sync_commands=True)
C’est la base de votre script.
Commençons par coder l’évènement on_ready qui vous permettra de savoir si votre bot est en ligne :
@bot.event
async def on_ready():
print("Bot est en ligne ;)")
à la fin de votre script, rédigez :
bot.run("TOKEN")
En remplaçant le « TOKEN » par le Token de votre bot, trouvable dans l’onglet Bot du discord developer portal.
Dans l’état actuel des choses, quand vous lancerez votre script, votre bot devrait se mettre en ligne sur le(s) serveur(s) sur le(s)quel(s) vous l’avez invité, et vous devez recevoir un message dans la console python vous en informant.
Étape 3 : programmer une commande Slash
Notre bot est en ligne, il est maintenant temps de lui coder sa première commande.
Pour cela écrivez en premier lieu la ligne (avant votre le bot.run(« TOKEN »)) :
@slash.slash(name="Bonjour", description="Fais-moi dire bonjour",)
L’option name correspond au nom de la commande, et sa description à… bah sa description. Maintenant il faut coder ce que fera la commande.
async def test(ctx: discord_slash.SlashContext,):
await ctx.send(f"Bonjour !")
le await ctx.send commande au bot d’envoyer le message se trouvant entre guillemet. Vous pouvez maintenant relancer votre code, et utiliser sa première commande en tapant / sur discord !
Étape 4 : Ajouter une option
Ce qui est merveilleux avec les commandes slash, c’est la possibilité d’ajouter une option.
Codons notre deuxième commande, mais cette fois-ci ajoutons un passage :
@slash.slash(name="robe", description="je te couds une robe", options=[discord_slash.manage_commands.create_option(name="couleur", description="de quelle couleur veux-tu ta robe?", option_type=3, required=True)])
async def test(ctx: discord_slash.SlashContext, couleur):
await ctx.send(f"tiens, je t'ai cousu une robe {couleur}")
« options » permet de rajouter une option. Name permet de changer le nom et description la description, tout comme les commandes. « required » sert à savoir si l’option est requise ou non. Je conseille de la régler sur True car si l’utilisateur n’utilise pas l’option cela peut faire buguer le script.
option_type règle le type d’option. 3 signifie que la réponse attendue de l’utilisateur est un string (pas la culotte, mais plutôt une chaîne de caractères, des mots, quoi.)
Ce tableau explique quel type est associé à quel chiffre :
Sub_command | 1 |
Sub_command_group | 2 |
String | 3 |
Integer | 4 |
Boolean | 5 |
User | 6 |
Channel | 7 |
Role | 8 |
Si vous voulez, par exemple, que l’utilisateur ne puisse rentrer qu’un chiffre entier dans l’option de la commande, remplacez le 3 par un 4.
Le « couleur » à la troisième ligne définit le nom exact de l’option.
IMPORTANT : le f se trouvant avant « tiens, je t’ai cousu une robe {couleur} » est très important car sans lui, le {couleur} ne sera pas compris comme une intégration de l’option mais bien comme un {couleur}.
Une fois le script exécuté, voilà ce que ça donne :
Si l’utilisateur rentre le mot « orange »:
étape 5 : Comment récupérer des informations de discord
Voici la marche à suivre pour récupérer les informations du serveur. Ce code doit être intégré dans une commande / pour fonctionner, car votre bot peut être dans plusieurs serveurs à la fois. Dans une commande slash, ce script récupérera les informations du serveur où a été faite la commande.
serveur = ctx.guild
nombreDeSalonstextuels = len(serveur.text_channels)
nombreDeSalonsVocaux = len(serveur.voice_channels)
Description_du_serveur = serveur.description
Nombre_de_personnes = serveur.member_count
Nom_du_serveur = serveur.name
Grace à ce bout de code, votre robot a récupéré les informations du serveur et les a stockées dans des variables.
La ligne de code :
auteur=ctx.author
dans une commande permet de récupérer le nom d’utilisateur de l’auteur de la commande. Si vous souhaitez le mentionner, utilisez :
auteur=ctx.author.mention
ainsi nous pouvons modifier notre première commande comme ceci :
@slash.slash(name="Bonjour", description="Fais-moi dire bonjour",)
async def test(ctx: discord_slash.SlashContext,):
auteur=ctx.author.mention
await ctx.send(f"Bonjour {auteur} !")
étape 6 : comment utiliser la typographie discord
Sur Discord il existe plusieurs techniques pour faire des effets de texte, qui marchent aussi pour les bots, directement dans le script.
Pour que votre texte soit en gras, il suffit de mettre deux astérisques (**) avant et après lui.
Avec un seul astérisque il sera en italique.
Avec deux barres (||) avant et après le texte, il sera sous spoiler.
Avec deux tirets bas (__ ) votre texte sera souligné.
Pour ajouter un emoji il faut récupérer le nom de l’emoji et le mettre dans le code, entouré de deux points.
Pour écrire du code (qui ne s’exécutera pas, rêvez pas) entourez votre texte « `
Enfin, afin de faire un saut de ligne dans le message dans votre script, tapez \n
La ligne de code suivante :
await ctx.send(f" **Bonjour !** ||ou bonne nuit|| __comment ça va ?__ :blush: \n Moi en tout cas ça va")
renverra :
étape 7 : héberger le bot
Je pense que vous avez remarqué : en l’état actuel des choses, votre bot n’est en ligne QUE si votre PC est allumé et votre code lancé.
Comment faire que votre bot marche 24 heures sur 24 ?
Pour cela il existe de nombreux services appelés des hébergeurs. La plupart sont payant, mais il en existe quelques gratuits. Et je ne vais faire de la pub à aucun d’eux, car je ne suis pas sponsorisée, moi, non mais !
Un article écrit par : Mélisse🐝
Sources : Discord, python, discord.py
https://discord.com/
https://discord.com/developers/applications
https://www.python.org/
Crédit photo : Image mise en avant : Mélisse🐝
Le reste sont des captures d’écran prise par moi-même des sites :
https://discord.com/ et https://discord.com/developers/applications