- 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 :Quelque chose qu'il est assez courant de faire quand on crée un bot Discord,c'est d'ajouter des commandes qui vont effectuer certaines actions avec le bot.
00:00:08 :Dans ce cas-ci, je commence à avoir plusieurs messages que j'aimerais bien supprimer,et c'est un peu long de le faire à la main,donc j'aimerais bien avoir une commande qui me permette de rapidement supprimer plusieurs messages.
00:00:18 :Par exemple, cette commande, je pourrais l'appeler del,en la préfixant d'un point d'exclamation ou d'un autre caractèrepour l'identifier comme quelque chose de spécial.Ce n'est pas obligatoire, mais ça peut être assez intéressant.
00:00:29 :Et ensuite, spécifier après cette commande le nombre de messages que je veux supprimer.Par exemple, point d'exclamation del 5 pour supprimer les cinq derniers messages.
00:00:38 :En l'état, ça ne fonctionne pas, et on va devoir coder cette fonction.Il y a plusieurs façons de faire,et la première façon de faire, ça va être directement à l'intérieur de onMessage.
00:00:48 :Si je reviens dans mon script, j'ai déjà écrit les lignes de codepour pouvoir vous montrer à quoi ça ressemble.On va faire une vérification à l'intérieur de l'événement onMessagepour vérifier si le message commence avec la commande del,donc avec la chaîne de caractère point d'exclamation del.
00:01:04 :Donc si le message.content starts with del,on va supprimer les messages qui ont été envoyés.Je commence par récupérer le nombre de messages que l'on veut supprimer.
00:01:14 :A partir de message.content, je fais un split dessus,ce qui va me permettre de splitter sur l'espaceet de récupérer avec les crochets et l'indice numéro 1le nombre que l'on passe après l'instruction del.
00:01:26 :Je convertis ce nombre en nombre entier,puisque par défaut le message va être en chaîne de caractère,donc moi je veux récupérer un nombre entier,donc je le convertis avec int,et ensuite on va récupérer l'historique des messagesqui ont été envoyés dans le salonavec message.channel et la fonction history ici.
00:01:44 :En limite, on va récupérer number plus 1et on va utiliser la méthode flattenpour mettre tout ça dans une liste unique.Pour ça, je ne rentre pas dans le détail,vous pouvez vous référer à la documentationsi vous voulez avoir plus d'informations sur tout ça.
00:01:57 :Je récupère ça dans une liste que j'appelle messageet je vais boucler sur chaque message pour les supprimer.Donc ça, c'est une façon de faire qui fonctionne.
00:02:06 :Le problème pour l'instant, c'est que number ici,je suis obligé de le récupérer à la mainen faisant un split sur le contenu du message,ensuite en convertissant cette chaîne de caractèreen nombre entier.
00:02:17 :Donc là, on a deux erreurs qui sont possibles.Je vais lancer le script pour vous montrercomment ça peut fonctionner et comment ça peut planter.
00:02:24 :Je lance le script, j'attends que le bot soit prêt,c'est le cas.Je reviens ici, je vais faire del 5,j'appuie sur entrée et là, vous voyez que notre botsupprime bien les cinq derniers messages.
00:02:34 :Par contre, si je fais juste del et que je ne mets rien après,là, je vais avoir une première erreur.Je reviens ici et on a un indexerrorpuisque forcément, on ne peut pas récupérer l'indice 1puisqu'après del ici, je n'avais rien mis comme nombre.
00:02:48 :Donc ça, c'est la première erreur qu'on peut avoiret la deuxième erreur qu'on peut avoir,c'est ici, au lieu d'un nombre, je mets quelque chose d'autre.
00:02:54 :Donc par exemple, test ici et là, c'est la conversionen nombre entier qui ne va pas fonctionner.Donc int ici, on a un valueerror,invalid literal for int with base 10 test.
00:03:04 :Donc là, on pourrait faire un try exceptavec ces deux exceptions pour les géreret ça commence à faire pas mal de lignes de code.
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.