{"id":1160,"date":"2023-05-16T11:03:42","date_gmt":"2023-05-16T09:03:42","guid":{"rendered":"https:\/\/konekan.fr\/?p=1160"},"modified":"2024-12-08T18:36:21","modified_gmt":"2024-12-08T17:36:21","slug":"bot-discord-avec-rust","status":"publish","type":"post","link":"https:\/\/konekan.fr\/index.php\/2023\/05\/16\/bot-discord-avec-rust\/","title":{"rendered":"Bot discord avec Rust"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1160\" class=\"elementor elementor-1160\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6244ddac elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6244ddac\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-wider\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-43a668f3\" data-id=\"43a668f3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-35771aa elementor-widget elementor-widget-heading\" data-id=\"35771aa\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Bot discord avec Rust<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-5c6622c3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5c6622c3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-38dac596\" data-id=\"38dac596\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3e296444 elementor-align-center elementor-widget elementor-widget-post-info\" data-id=\"3e296444\" data-element_type=\"widget\" data-widget_type=\"post-info.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-inline-items elementor-icon-list-items elementor-post-info\">\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-49a232a elementor-inline-item\" itemprop=\"author\">\n\t\t\t\t\t\t<a href=\"https:\/\/konekan.fr\/index.php\/author\/lucasguichard127\/\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-user-circle\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-author\">\n\t\t\t\t\t\t\t\t\t\tlucasguichard127\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-05df5ef elementor-inline-item\" itemprop=\"datePublished\">\n\t\t\t\t\t\t<a href=\"https:\/\/konekan.fr\/index.php\/2023\/05\/16\/\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-calendar\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-date\">\n\t\t\t\t\t\t\t\t\t\t<time>mai 16, 2023<\/time>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-697cf04 elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-clock\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-time\">\n\t\t\t\t\t\t\t\t\t\t<time>11:03 am<\/time>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-bf070ba elementor-inline-item\" itemprop=\"commentCount\">\n\t\t\t\t\t\t<a href=\"https:\/\/konekan.fr\/index.php\/2023\/05\/16\/bot-discord-avec-rust\/#respond\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-comment-dots\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-comments\">\n\t\t\t\t\t\t\t\t\t\tAucun commentaire\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t<\/li>\n\t\t\t\t<li class=\"elementor-icon-list-item elementor-repeater-item-dcee5c4 elementor-inline-item\" itemprop=\"about\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-tags\"><\/i>\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text elementor-post-info__item elementor-post-info__item--type-terms\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-post-info__terms-list\">\n\t\t\t\t<a href=\"https:\/\/konekan.fr\/index.php\/tag\/async\/\" class=\"elementor-post-info__terms-list-item\">async<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/bot-discord\/\" class=\"elementor-post-info__terms-list-item\">bot discord<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/projet-perso\/\" class=\"elementor-post-info__terms-list-item\">projet perso<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/rust\/\" class=\"elementor-post-info__terms-list-item\">Rust<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/serenity\/\" class=\"elementor-post-info__terms-list-item\">serenity<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/tokio\/\" class=\"elementor-post-info__terms-list-item\">tokio<\/a>, <a href=\"https:\/\/konekan.fr\/index.php\/tag\/training\/\" class=\"elementor-post-info__terms-list-item\">training<\/a>\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-2cb4829f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2cb4829f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-2bece535\" data-id=\"2bece535\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-57d7ce95 elementor-position-left elementor-widget__width-auto elementor-vertical-align-middle elementor-view-default elementor-mobile-position-top elementor-widget elementor-widget-icon-box\" data-id=\"57d7ce95\" data-element_type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<a href=\"https:\/\/github.com\/GuicLuca\/GameBot4Fun\" target=\"_blank\" class=\"elementor-icon\" tabindex=\"-1\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-github-alt\"><\/i>\t\t\t\t<\/a>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tPage GitHub du projet\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-48f09cba elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"48f09cba\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-wider\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9ac1c91\" data-id=\"9ac1c91\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-453989c9 elementor-widget elementor-widget-heading\" data-id=\"453989c9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Le d\u00e9fi<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-286b1e7d elementor-widget elementor-widget-text-editor\" data-id=\"286b1e7d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>\u00a0 \u00a0 \u00a0 \u00a0Apr\u00e8s avoir fini le cours-projet consistant \u00e0 faire un serveur de jeu en Rust, j&rsquo;ai voulu continuer \u00e0 manipuler le langage pour me familiariser avec toutes ses notions. Mon professeur de r\u00e9seau avait toujours de bons conseils en cours, mais il \u00e9tait difficile de tous les retenir d&rsquo;un coup. C&rsquo;est pourquoi j&rsquo;ai eu l&rsquo;id\u00e9e de faire un bot qui permettrait de publier automatiquement des messages tous les jours \u00e0 une heure fixe, pour diffuser un conseil du jour sur son discord communautaire.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-318e4d76 elementor-widget elementor-widget-heading\" data-id=\"318e4d76\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Mon approche<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-224321ed elementor-widget elementor-widget-text-editor\" data-id=\"224321ed\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 Le projet est assez court, mais mon but premier \u00e9tait de manipuler de nouveaux aspects du langage Rust tout en cr\u00e9ant un outil pratique. J&rsquo;ai donc commenc\u00e9 par rassembler les fonctionnalit\u00e9s que je voulais voir appara\u00eetre dans le bot avant de me lancer. Voici une petite liste :<\/p>\n\n<ul>\n \t<li>Cr\u00e9er, lire, modifier et supprimer un Conseil (nom de la structure de donn\u00e9es contenant les informations du message quotidien).<\/li>\n \t<li>Afficher la liste des conseils d\u00e9j\u00e0 cr\u00e9\u00e9s.<\/li>\n \t<li>Avoir un script asynchrone qui se chargerait d&rsquo;envoyer un conseil par jour \u00e0 une heure fixe.<\/li>\n \t<li>La possibilit\u00e9 de configurer ce script pour choisir l&rsquo;heure et le salon du message.<\/li>\n \t<li>La possibilit\u00e9 de lancer, arr\u00eater et consulter la configuration du script.<\/li>\n \t<li>Toutes les donn\u00e9es devront \u00eatre persist\u00e9s dans une base de donn\u00e9es pour qu&rsquo;elles survivent \u00e0 un crash ou une mise \u00e0 jour du bot.<\/li>\n \t<li>Toutes les interactions devront \u00eatre faites depuis Discord sans jamais toucher au code.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 Une fois le besoin identifi\u00e9, je me suis lanc\u00e9 \u00e0 la recherche de ressources pour r\u00e9aliser le projet (documentation, vid\u00e9os, librairies, etc.). Finalement, je me suis beaucoup inspir\u00e9 du d\u00e9p\u00f4t GitHub <a style=\"color: grey; font-weight: bold; text-decoration: underline;\" href=\"https:\/\/github.com\/serenity-rs\/serenity\/tree\/current\/examples\">Serenity\/example<\/a> , qui m&rsquo;a appris comment utiliser Serenity (un framework Rust permettant d&rsquo;interagir avec l&rsquo;API de Discord), mais aussi comment structurer proprement des projets. J&rsquo;ai \u00e9galement d\u00fb utiliser Tokio pour la partie asynchrone et Rusqlite pour la gestion de la base de donn\u00e9es.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-22817e9a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"22817e9a\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-6bbd171b\" data-id=\"6bbd171b\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4bc21599 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"4bc21599\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-clock\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Dur\u00e9e du projet : 2 semaines<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-code\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Taille du projet : 2000 lignes de codes environ<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-66479b3d\" data-id=\"66479b3d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-61e5f3d8 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"61e5f3d8\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-cogs\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Nombre de commandes : 7<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-cubes\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Nombre de d\u00e9pendances majeures : 8<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-47866bc0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"47866bc0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-5c483c19\" data-id=\"5c483c19\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4b7aa13b elementor-widget elementor-widget-testimonial\" data-id=\"4b7aa13b\" data-element_type=\"widget\" data-widget_type=\"testimonial.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-wrapper\">\n\t\t\t\t\t\t\t<div class=\"elementor-testimonial-content\">Ce projet \u00e9tait l'occasion pour moi de lier l'utile \u00e0 l'agr\u00e9able en mettant mon temps au service d'un projet amusant et utile pour les autres. Je sens que ce projet va continuer d'\u00e9voluer en fonction des nouveaux besoins du serveur Discord.<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-testimonial-meta elementor-has-image elementor-testimonial-image-position-aside\">\n\t\t\t\t<div class=\"elementor-testimonial-meta-inner\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-image\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/konekan.fr\/wp-content\/uploads\/2023\/02\/portraitDeMoi-scaled-e1676157618267-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail wp-image-592\" alt=\"C&#039;est ma petite t\u00eate sur cette photo\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-details\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-testimonial-job\">- Lucas <\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-48f6d034 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"48f6d034\" data-element_type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-wider\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4a80aeb8\" data-id=\"4a80aeb8\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-5669517d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5669517d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-72d78893\" data-id=\"72d78893\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2d5d8545 elementor-widget elementor-widget-text-editor\" data-id=\"2d5d8545\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h5 style=\"text-align: left; color:#6EC1E4;\">Et au final il marche comment ce bot?<\/h5>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 \u00a0 Le bot repose sur des commandes d&rsquo;application qui sont sp\u00e9cifiques \u00e0 un serveur et sont identifi\u00e9es par la source qui les a cr\u00e9\u00e9es (dans ce cas, le bot lui-m\u00eame). J&rsquo;ai choisi ces commandes car elles b\u00e9n\u00e9ficient de l&rsquo;autocompl\u00e9tions de Discord, ce qui les rend beaucoup plus faciles \u00e0 manipuler pour les utilisateurs. Voila un exemple de commande ci-dessous.<\/p>\n<img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-1188 size-full\" src=\"https:\/\/konekan.fr\/wp-content\/uploads\/2023\/05\/tips_create_tags.png\" alt=\"\" width=\"1170\" height=\"96\" \/>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0Gr\u00e2ce au formatage de Discord sur ces commande l&rsquo;utilisateur peux facilement utiliser les commandes avec tes description et message d&rsquo;aide sur chaque commande et chaque param\u00e8tre ! En partant du principe que toutes les commandes sont claire, un utilisateur pourrait utiliser le bot sans lire la documentation !<\/p>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0A chaque commande le bot vas r\u00e9pondre avec un message embarqu\u00e9 informant l&rsquo;utilisateur du r\u00e9sultat de la commande et des action a prendre si besoin. Ici on a l&rsquo;exemple de r\u00e9ponse \u00e0 la commande\u00a0 \u00ab\u00a0\/scheduler info\u00a0\u00bb<\/p>\n<img decoding=\"async\" class=\"aligncenter wp-image-1189 size-full\" src=\"https:\/\/konekan.fr\/wp-content\/uploads\/2023\/05\/scheduler_response_info.png\" alt=\"\" width=\"489\" height=\"212\" \/>\n<h5 style=\"color:#6EC1E4;\">La suite du projet<\/h5>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 La fonctionnalit\u00e9 principale du bot ayant \u00e9t\u00e9 impl\u00e9ment\u00e9e, je suis heureux d&rsquo;avoir pu apprendre \u00e0 manipuler de nouveaux aspects de Rust, tels que la gestion des bases de donn\u00e9es et l&rsquo;utilisation de Tokio avec le Framework Serenity. Je pense que ce projet a du potentiel si on lui ajoute de nouvelles fonctionnalit\u00e9s, et cela tombe bien, car l&rsquo;architecture du projet a \u00e9t\u00e9 con\u00e7ue dans cette optique !<\/p>\n<p style=\"text-align: justify;\">\u00a0 \u00a0 \u00a0 Qui sait, nous pourrions ajouter la possibilit\u00e9 de g\u00e9rer les r\u00f4les depuis le bot, voire m\u00eame de g\u00e9rer les questions de cours ! \u00c0 suivre \ud83d\ude42<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5f464123 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5f464123\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-wider\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c2057bc\" data-id=\"5c2057bc\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Ce projet a eu pour but de me faire approfondir mes connaissances du langage Rust tout en cr\u00e9ant un bot discord. Il est utilis\u00e9 par le serveur GameDev4Fun.<\/p>\n","protected":false},"author":1,"featured_media":1161,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[34],"tags":[38,36,41,35,40,39,37],"class_list":["post-1160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-other","tag-async","tag-bot-discord","tag-projet-perso","tag-rust","tag-serenity","tag-tokio","tag-training"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/posts\/1160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1160"}],"version-history":[{"count":39,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/posts\/1160\/revisions"}],"predecessor-version":[{"id":1907,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/posts\/1160\/revisions\/1907"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/media\/1161"}],"wp:attachment":[{"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/konekan.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}