Bases des bots Discord
Dans cette activité les makers découvrent comment créer des bots Discord en Python et mettent cet apprentissage en pratique à travers des défis de création.

Objectifs pédagogiques
Compétences techniques
- Mettre en place un bot sur le portail développeur Discord
- Créer un bot basique
- Savoir créer des commandes et des événements pour son bot
La place dans le module
Cette activité vient au tout début du module, avant l’activité Crée un bot Spyfall
Jour 1
Jour 2
Jour 3
Jour 4
Jour 5
1h
🤩
30 min
🤩
30 min
🤩
1h
🤩
Ressources
- Charte Magic Makers
- Menu Python
- Comment animer un Spyfall (uniquement pour les animateur.ice.s)
- Créer un bot sur le portail développeur Discord
- Défis bots Discord
- (lien externe) Replit
- (lien externe) Solutions des défis (uniquement pour les animateur.ice.s)
- (lien externe) Portail développeur Discord
- (lien externe) Documentation Discord.py
Matériel
- chaque maker doit avoir son propre compte Discord
- chaque maker doit avoir son propre compte sur Replit
Attention !
Tu as besoin de créer un serveur discord spécifique où les makers auront des droits supplémentaires pour ajouter et tester leurs bots, lis bien cette doc !
Déroulé de l'activité
Segmentation de l’activité
- Segment 1 (1h) : Spyfall / Base d’un bot Discord
- Segment 2 (30 min) : Commandes et événements
- Segment 3 (30 min) : Défis (partie 1)
- Segment 4 (1h) : Défis (partie 2)
Détail de l’activité
Segment 1 (1h) : Spyfall / Bases d’un bot Discord
Introduction et Spyfall (20min)
Accueille les makers et fais l’introduction habituelle :
- Présente la charte et assure toi que tous les makers soient d’accord avec celle-ci
- Assure toi que les makers maîtrisent l’outil utilisé pour communiquer durant le module (dans le cas présent, Discord) : explique le principe des salons textuels, vocaux, des réactions, de la possibilité de notifier quelqu’un avec un @…
(C’est encore mieux si c’est les makers eux-mêmes qui expliquent comment s’utilise Discord, n’hésite pas à demander si l’un d’entre eux veut expliquer !) - Fais un petit tour de table avec une présentation très rapide. Commence pour donner l’exemple : “Je m’appelle Toto, j’ai 52 ans, j’adore le chocolat noir et les poneys”
Explique que durant ce module, vous allez créer des bots Discord !
- Est que l’un d’entre vous peut-il expliquer ce qu’est un bot ?
Dans tous les cas le plus simple c’est de tester vous-même un bot pour voir comment ça fonctionne : on va donc lancer une partie de Spyfall avec un bot.
Explique en quoi consiste Spyfall : tous les joueurs seront des détectives dans un seul et même endroit (une banque, un supermarché, un camping…) mais l’un d’entre nous sera un espion. Il faudra alors se poser des questions entre nous à l’oral pour essayer de trouver qui est l’espion. Pour l’espion, il s’agira de deviner dans quel lieu se trouvent les détectives ! Tu peux utiliser cette ressource pour expliquer rapidement Spyfall :
Lance le bot Spyfall et montre-leur comment rejoindre / quitter la partie avec les commandes !participer et !quitter, assure-toi que tout le monde soit inscrit avec la commande !liste, puis lance la commande !jouer pour qu’ils puissent voir ce que cela fait. Rejoins également la partie pour jouer avec tes makers 🙂 .
Ensuite, on aura un certain temps (donné par le jeu) pour discuter entre nous et trouver qui est l’espion !

Création du bot sur le portail développeur Discord (20min)
Maintenant que l’on a vu comment un bot pouvait fonctionner, il est temps d’en créer un nous-même !
La première étape est de créer le bot sur le portail développeur Discord. C’est quelque chose que l’on devra faire une seule fois – par la suite, on n’aura plus besoin de le faire.
En t’aidant de la ressource ci-dessus que tu présenteras aux makers, montre-leur comment créer son bot sur le portail développeur Discord et accompagne-les durant cette partie. À l’issue de cette partie, tout le monde doit avoir créé son bot et l’avoir invité sur le serveur – il doit apparaître dans la liste des membres à droite, même si pour le moment il est hors-ligne.

Code de base d’un bot Discord (20min)
Montre aux makers comment créer le code de base d’un bot Discord et demande-leur de faire comme toi. Commence par créer un nouveau projet Python sur Replit, puis introduis les différents éléments du code de base un par un en les expliquant :
- les imports sont nécessaires pour pouvoir utiliser les fonctions propres à Discord, créer des commandes ou utiliser des fonctions asynchrones (c’est-à-dire que toutes nos instructions ne vont pas s’exécuter en une fois : en effet, il y a toujours des petits temps de réponse à chaque fois que l’on lance une commande)
- les intents sont nécessaires – Discord demande à ce que l’on explique dans quel but on souhaite utiliser le bot (envoyer des messages, gérer des rôles, etc.)
- la ligne bot = commands.bot(…) correspond à la création de notre bot en lui-même…
- …enfin, tout en bas du code, on aura la ligne nest_asyncio.apply() qui est nécessaire et surtout le bot.run(“inserer_token_ici”) qui permet de lancer le bot ! Montrer aux makers comment récupérer son token sur le portail développeur Discord.
Et voilà, on a ainsi les bases d’un bot, ce sera la même chose pour tous les bots que l’on créera par la suite ! Il s’agira ensuite d’ajouter les commandes et les événements propres à notre bot. En attendant, on peut déjà lancer le code : si tout se passe bien, le bot devrait maintenant être en ligne sur le serveur !
>>> Bases des bots Discord <<<

Segment 2 (30 min) : Commandes et événements
Commande de base et événement on_ready (15min)
Pour l’instant, à part être en ligne, notre bot ne fait pas grand-chose !
Crée avec les makers l’événement on_ready() suivant :
@bot.event |
Cet événement permet en sorte d’afficher “Le bot est prêt” dans le console quand celui-ci sera prêt à recevoir des commandes 🙂
Puis, crée avec eux une simple commande !ping :
@bot.command(« ping ») |
Prend le temps de bien expliquer les différents éléments de cette commande de base : le décorateur @bot.command(“nom_de_la_commande”) pour préciser que la fonction juste en-dessous est une commande, le ctx que l’on reçoit qui est un objet “Context” contenant tout plein d’informations que l’on peut récupérer (présenter le Context et la méthode send() sur la documentation discord.py), le await qui est nécessaire…

On a ainsi vu un exemple d’événement et de commande. Explique aux makers la différence entre les deux (toujours en demandant si quelqu’un sait avant !) :
- les commandes sont les messages envoyés par l’utilisateur qui commencent par le préfixe défini pour le bot – sur cette fiche d’activité, le préfixe utilisé est “!”
- les événements sont les autres types d’interactions que l’on peut détecter : un utilisateur est en train d’écrire, un message vient d’être envoyé, quelqu’un a réagi avec un emoji sur un message…
Créer un bot Discord, c’est simplement créer et gérer ces commandes et événements !
Plus d’infos sur les commandes (15min)
L’intention derrière cette partie est de présenter aux makers :
- que l’on peut récupérer l’auteur lorsque l’on écrit une commande (et plein d’autres informations, mais c’est la plus utilisée 😉 )
- qu’il est possible de créer des commandes avec plusieurs arguments
Tous ensemble, on va donc :
- Créer une commande !bonjour qui répond “Bonjour, <pseudo> !” (avec bien entendu le pseudo de la personne qui a envoyé la commande)
- Créer une commande !par9 qui permet de multiplier par 9 le nombre donné
- Créer une commande !multiplier qui permet de multiplier les deux nombres donnés. On améliorera même la commande pour qu’elle puisse multiplier tous les nombres donnés ! On aura ainsi vu que l’on peut utiliser un, plusieurs, et même un nombre indéfini d’arguments avec une commande.
Segment 3 (30 min) : Défis (partie 1)
Introduction (5min)
Explique aux makers que l’on va maintenant faire des défis : ils seront ainsi plus en autonomie et pourront découvrir d’autres fonctionnalités de la librairie Discord. Rassure-les en disant que tu es bien sûr disponible pour toute question, et que l’on va faire le premier défi ensemble dans tous les cas 🙂
Enfin, passe-leur le lien du Menu Python et montre-leur qu’il y a une catégorie “Bot Discord”. Tout au long de ce module, ils pourront trouver de nombreuses informations utiles à cet endroit. Tu peux même leur conseiller de mettre cette page en favori !
Défis (25min)
La liste des défis est ici :
Et, uniquement pour les animateur.ice.s : solutions des défis
Fais le premier défi en partage d’écran, avec les makers (on peut donc tous créer un nouveau projet Python). Surtout, ne fais pas le défi tout seul : le but est justement que les makers verbalisent leur réflexion, commencent à réfléchir, etc. afin d’être fins prêts pour se mettre aux défis suivants !
Une fois le premier défi réalisé, les makers peuvent passer aux défis suivants, en autonomie. Rappelle-leur que tu restes dispo à la moindre question et qu’il n’y a pas de question bête – on découvre encore les bases de Discord.py ! Passe voir chacun des makers pour s’assurer que personne ne soit perdu.
- utilisation d’autres événements (notamment on_message et on_reaction_add)
- mentionner un membre
- envoi de message privé



Segment 4 (1h) : Défis (partie 2)
Correction des premiers défis (10min)
Les premiers défis introduisent des notions essentielles, il est donc important de les corriger ensemble. Demande aux makers si quelqu’un veut présenter sa solution pour le défi 2 ! Si la plupart des makers ont réalisé le défi 3, demande également si quelqu’un veut présenter sa solution du défi 3.
Une fois les défis corrigés, les makers peuvent retourner en autonomie sur les défis. Rappelle que tu restes disponible comme à ton habitude 🙂
Défis (35min)
Les makers avancent en autonomie sur les défis. Passe voir chaque maker pour les aider à avancer sur les défis. Si tu vois des points bloquants chez plusieurs makers, n’hésite pas à faire un point avec tous les makers pour (ré)expliquer la notion qui pose souci !

Pense à annoncer 5 minutes avant que l’on va bientôt présenter les solutions aux différents défis.
Solutions et déclusion (15min)
On va profiter de ces derniers moments pour présenter les solutions. Demande aux makers si quelqu’un souhaite présenter sa solution pour le défi 3 (si tu ne l’as pas encore corrigé), puis pour le défi 4, etc.
Lors de la présentation des solutions, les points à mettre en avant pour chaque défi sont :
- Défi 1 : comment utiliser un événement on_message
- Défi 2 : l’utilisation du * pour créer une commande avec multiples arguments
- Défi 3 : comment rechercher les informations demandées dans la documentation
- Défi 4 : comment utiliser l’événement on_reaction_add

Enfin, garde les 5 dernières minutes pour une rapide déclusion sur la première partie de ce module :
- Avez-vous aimé ?
- Etait-ce trop rapide ? Trop lent ?
- Trop compliqué ?
- Avez-vous des idées de choses que vous aimeriez créer avec les bots Discord ?
Tips
Tips truc
machin bidule
Tips truc
machin bidule