- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Un des événements les plus utiles, c'est l'événement OnMessage.Cet événement, il va être appelé à chaque fois qu'un message est posté sur un serveur.On va avoir en paramètre de cet événement le message qui a été envoyé.
00:00:13 :On va utiliser cet événement pour faire un script très simplequi va tout simplement me permettre de communiquer avec le bot.C'est un petit programme qu'on fait généralement pour tester notre bot.
00:00:24 :Ce programme, c'est un programme de ping-pong, c'est-à-dire que moi je vais entrer le mot pinget le bot va me répondre avec le mot pong.
00:00:31 :Avec tout ça, on va pouvoir détecter un message et réagir en fonction du contenu de ce messageet également commencer à faire parler notre bot.
00:00:39 :Je reviens dans mon script et on va gérer un deuxième événement.Je remets mon décorateur at client.event et on va faire l'événement OnMessage.On va avoir un paramètre comme on l'a vu dans la documentation.
00:00:52 :Le paramètre message, il est bien important de le mettre sinon ça ne fonctionnera pas.On va vérifier ce que contient ce message.Pour ça, on va utiliser le paramètre content de ce message.
00:01:04 :Si vous souhaitez voir tout ce que vous pouvez faire avec le paramètre message,vous pouvez vous rendre dans la documentation.Je ne le répéterai jamais assez, cette documentation est quand même très bien faite.
00:01:13 :Il faut vraiment l'utiliser à bon escient.Dans ce cas-ci, vous voyez qu'on a un message qui est passéet si on va voir dans les paramètres, on a un message qui est de type message.
00:01:22 :Je peux cliquer ici et ça va automatiquement m'amener dans la partie message,dans cette classe message qui représente un message de Discord.On voit ici qu'on a tout ça qui est disponible sur ce message.
00:01:33 :Si par exemple on voulait récupérer l'auteur du message, on pourrait faire message.author.On a également le contenu du message qui est disponible avec le paramètre content.
00:01:43 :Ce paramètre est de type string, chaîne de caractère, et c'est le contenu du message.Pour l'instant, ce que je vais faire, c'est tout simplement un print de message.content.
00:01:53 :On va laisser ça comme ça, pour l'instant on a tout ce qu'il nous faut,on a notre événement, on n'oublie pas de mettre async ici,on récupère le message et on fait un print du contenu du message.
00:02:02 :Je relance mon script, j'attends que le bot soit prêt,et une fois que c'est fait, je peux retourner sur mon serveur,je vais rentrer ping, j'appuie sur rentrer,et si je retourne sur mon script, on voit bien que ping est affiché ici.
00:02:13 :On a fait un print du contenu de mon message.Je vais rentrer autre chose, je vais marquer hello world ici,et on va voir que ça marche avec n'importe quoi.
00:02:21 :On a bien hello world ici qui est affiché.Notre événement est bien pris en compte,et on va maintenant vérifier le contenu du messagepour s'assurer que notre message contient bien ping.
00:02:31 :Pour ça, on va utiliser une structure conditionnelle,on va dire if message.content égale égale à la chaîne de caractère ping,on va répondre tout simplement ping.
00:02:41 :Là, vous voyez que j'ai mis ping en minuscule,ce que je vais faire, c'est que je vais convertir ce message en minusculeavec la méthode lower, comme ça, ça va fonctionnerpeu importe que je mette ou non une majuscule au mot ping.
00:02:52 :Ensuite, à l'intérieur de cette structure conditionnelle,on va cette fois-ci faire parler le bot.Pour ça, on a besoin de plusieurs choses.La première chose qu'on a besoin de savoir,c'est dans quel salon on se trouve,puisque quand on va envoyer un message,on va utiliser une instance du salon.
00:03:08 :Le salon, si on revient dans notre API référence,ça peut être différents types de salons.On va avoir par exemple le text-channel ou le voice-channel.
00:03:16 :On a également dm-channel, group-channel, etc.Il y a différents types de salons qui sont représentés par ce mot channel.Comment on va pouvoir récupérer ce salon ?
00:03:25 :On va le récupérer à partir de notre message.Si je reviens ici au niveau du message,on va voir que le message va contenir un attribut channelet on voit que ça nous indique que cet attribut contient le text-channeldepuis lequel le message a été envoyé.
00:03:40 :On nous indique également que ça peut être un dm-channel ou group-channelsi c'est un message privé.Ça va nous retourner un text-channelet avec ce text-channel, si je clique dessus,vous allez voir qu'on va pouvoir envoyer un message dans ce channelavec la méthode send.
00:03:56 :La méthode send, on la retrouve tout en bas iciet on voit que cette méthode, on peut lui envoyer pas mal de choseset notamment le contenu de notre message.
00:04:04 :On a send ici et on va pouvoir lui envoyer le contenu.Cette méthode, on va l'appeler et on va la préfixer de await.Await, là encore, on est dans les coroutines,donc on a async et await.
00:04:16 :Await, vous ne pouvez le mettre qu'à l'intérieur d'une fonctionqui commence par async iciet pour faire simple, ça va nous permettre d'éviterque l'on ait plusieurs choses qui se passent en même tempspuisque là, on pourrait avoir plusieurs événementsqui ont besoin d'attendre les uns après les autres
00:04:32 :et on ne veut pas, par exemple, si on envoie deux messages,que le deuxième message qu'on envoie soit envoyé avant le premier.Ce mot-clé await, ça nous permet de nous assureren quelque sorte que les choses vont se dérouler dans le bon ordre.
00:04:43 :Je vais mettre await juste avant la ligne de codeet on va utiliser notre message.On va récupérer le channel et on va utiliser la méthode sendet on va tout simplement envoyer comme message pangpuisque c'est ce qu'on voulait que le bot nous réponde.
00:04:57 :Message.channel.send et on envoie le contenu pang.Je relance mon script et on va pouvoir tester notre boten revenant sur mon serveur Discord.Je vais renvoyer le mot ping.
00:05:09 :Je peux mettre une majuscule, ça n'a pas d'importancepuisque j'utilise la méthode lower pour convertir le messagequi est envoyé, donc le contenu du message ici en lower.
00:05:17 :Là, je vérifie qu'il est égal à pinget si c'est le cas, je vais renvoyer pang.J'envoie ping et normalement, si tout fonctionne,j'ai bien le bot qui m'envoie panget je peux faire ça autant de fois que je veuxet à chaque fois, vous voyez que le bot va correctement me répondre.
00:05:30 :Si je mets quelque chose d'autre, comme hello world,là, le bot ne réagit pascar cette structure conditionnelle n'est pas vérifiée.Donc vous voyez, c'est finalement assez simplede faire déjà un espèce de chat bot,très basique pour l'instant,mais ça vous montre quand même la logique derrière tout ça.
00:05:46 :On a à chaque fois des événementset on va réagir à ces événements de différentes façonsavec du code Python.C'est bien important d'utiliser tout ce que vous avezà votre disposition dans les événements,donc par exemple ici, le message.
00:05:58 :Ici, on a récupéré le contenu du message.On a également récupéré le channelà partir duquel le message a été envoyéet vous allez avoir plein d'éléments comme çaque vous allez pouvoir récupérer directementà partir des différents éléments dans vos événements.
00:06:11 :N'hésitez pas à chaque fois à vous référer à la documentation.Ça peut faire un peu peur au début,mais vous voyez que tout est très clairement expliqué.
00:06:18 :On pourrait avoir, par exemple,envie que le message s'autodétruiseaprès un certain nombre de secondes.Donc vous avez, par exemple, cet élément delete afteret on peut le mettre dans notre fonction ici, dans send.
00:06:30 :Je vais mettre delete after égale 5et vous allez voir qu'après 5 secondes,le message va s'effacer.Donc je relance mon script pour que les changementssoient pris en compte.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.