Bot discord avec Rust

page GitHub du projet

Le défi

Après avoir fini le cours-projet consistant à faire un serveur de jeu en Rust, j’ai voulu continuer à manipuler le langage pour me familiariser avec toutes ses notions. Mon professeur de réseau avait toujours de bons conseils en cours, mais il était difficile de tous les retenir d’un coup. C’est pourquoi j’ai eu l’idée de faire un bot qui permettrait de publier automatiquement des messages tous les jours à une heure fixe, pour diffuser un conseil du jour sur son discord communautaire.

Mon approche

      Le projet est assez court, mais mon but premier était de manipuler de nouveaux aspects du langage Rust tout en créant un outil pratique. J’ai donc commencé par rassembler les fonctionnalités que je voulais voir apparaître dans le bot avant de me lancer. Voici une petite liste :

  • Créer, lire, modifier et supprimer un Conseil (nom de la structure de données contenant les informations du message quotidien).
  • Afficher la liste des conseils déjà créés.
  • Avoir un script asynchrone qui se chargerait d’envoyer un conseil par jour à une heure fixe.
  • La possibilité de configurer ce script pour choisir l’heure et le salon du message.
  • La possibilité de lancer, arrêter et consulter la configuration du script.
  • Toutes les données devront être persistées dans une base de données pour qu’elles survivent à un crash ou une mise à jour du bot.
  • Toutes les interactions devront être faites depuis Discord sans jamais toucher au code.

 

      Une fois le besoin identifié, je me suis lancé à la recherche de ressources pour réaliser le projet (documentation, vidéos, librairies, …). Finalement, je me suis beaucoup inspiré du dépôt GitHub Serenity/example , qui m’a appris comment utiliser Serenity (un framework Rust permettant d’interagir avec l’API de Discord), mais aussi comment structurer proprement des projets. J’ai également dû utiliser Tokio pour la partie asynchrone et Rusqlite pour la gestion de la base de données.

Ce projet était l'occasion pour moi de lier l'utile à l'agréable en mettant mon temps au service d'un projet amusant et utile pour les autres. Je sens que ce projet va continuer à évoluer en fonction des nouveaux besoins du serveur Discord.
C'est ma petite tête sur cette photo
- Lucas
Et au final il marche comment ce bot?

        Le bot repose sur des commandes d’application qui sont spécifiques à un serveur et sont identifiées par la source qui les a créées (dans ce cas, le bot lui-même). J’ai choisi ces commandes car elles bénéficient de l’autocomplétions de Discord, ce qui les rend beaucoup plus faciles à manipuler pour les utilisateurs. Voila un exemple de commande ci-dessous.

     Grâce au formatage de Discord sur ces commande l’utilisateur peux facilement utiliser les commandes avec tes description et message d’aide sur chaque commande et chaque paramètre ! En partant du principe que toutes les commandes sont claire, un utilisateur pourrait utiliser le bot sans lire la documentation !

     A chaque commande le bot vas répondre avec un message embarqué informant l’utilisateur du résultat de la commande et des action a prendre si besoin. Ici on a l’exemple de réponse à la commande  « /scheduler info »

La suite du projet

      La fonctionnalité principale du bot ayant été implémentée, je suis heureux d’avoir pu apprendre à manipuler de nouveaux aspects de Rust, tels que la gestion des bases de données et l’utilisation de Tokio avec le Framework Serenity. Je pense que ce projet a du potentiel si on lui ajoute de nouvelles fonctionnalités, et cela tombe bien, car l’architecture du projet a été conçue dans cette optique !

      Qui sait, nous pourrions ajouter la possibilité de gérer les rôles depuis le bot, voire même de gérer les questions de cours ! À suivre 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *