Début des travaux du CakeDocBot

Depuis hier soir je travail sur un petit projet personnel afin d’apprendre NodeJS. Quoi de mieux qu’un petit travail pratique et concret ?

J’ai donc décidé de créer un bot Discord qui répond à la commande !cake <keyword> et retourne un exemple de code ainsi qu’un lien vers la documentation du cookbook de CakePHP. Dans une deuxième phase, j’aimerais aussi qu’il réponde à la commande !cake-api <keyword> et qu’il retourne le même type de réponse mais cette fois à partir de la documentation API de CakePHP.

À ce stade du développement, j’ai envie de vous présenter mon « Modus Operandi » ainsi que les librairies / documentations que j’utiliserais afin de développer ce bot. Lorsqu’il sera prêt, je vous partagerais un lien github afin que vous puissiez utiliser ce bot et/ou vous en inspirez pour vos autres travails !

Modus Operandi

Créer un bot Discord

Afin de créer un bot Discord, il faut s’inscrire pour une application Discord et ensuite transformer cette application en bot (voir un tutoriel (en)). Il vous faudra aussi choisir une librairie afin d’utiliser un wrapper pour l’API de Discord. À moins que vous ne décidiez de vous même créer votre wrapper, mais une liste impressionnante de langage sont déjà couvert ! (Liste des librairies). Pour ma part, j’ai choisi DiscordJS

Obtenir la documentation « cakephp cookbook »

Afin de ne pas envoyer des requêtes inutiles sans arrêt au site web CakePHP Cookbook je compte télécharger directement la documentation à partir du répertoire GitHub avec l’aide de la librairie nodegit. Puisque CakePHP utilise le format reStructuredText au lieu du format MarkDown (utilisé par Discord), j’utiliserais donc Pandoc (node-pdc) afin de convertir les fichiers ainsi obtenue.

être à jour !

Il serait bête de vouloir éviter des requêtes au site web de CakePHP mais de toujours vérifier que la documentation locale est à jour, c’est pourquoi, l’utilisation de cron jobs for node me semble un choix judicieux. Une fois toute les 24 heures je compte vérifier via l’API de GitHub les derniers commits, et comparer avec les commits local, je compte aussi ajouter une nouvelle commande qui sera !cake-update-doc afin de lancer cette même requête manuellement. Si l’historique est différent, je relancerais donc les tâches de synchronisation afin de mettre le bot à jour.

Création d’un système d’indexation et outils de recherche

Afin de générer une recherche dans les fichiers md et ainsi avoir quelques choses à répondre aux commandes !cake (et éventuellement !cake-api), j’aurais besoins des paquets NPM suivants :

  • commonmark, afin d’analyser les fichiers Markdown et ainsi les indexers
  • stemmer, afin de créer des « stem » qui nous permet de convertir des mots clés comme « consideration » en « consider »
  • walk, fs, path afin de naviguer dans les dossiers de la documentation
  • crypto, afin de créer des hash d’indexation afin de créer des scores d’exactitude

Modèle de réponse

Dépendant de la facilité à extraire des parties d’une page MD, j’aimerais arriver avec un résultat du type suivant pour une requête !cake cookie :

 Conclusion

« So far so good » pour l’instant l’étape de créer un bot Discord, de lui faire répondre pong à une requête !ping et installé nodegit sont complété! Espérons que le reste iras mieux, j’ai perdu une soirée entière à tenter d’installer nodegit alors que Amazon S3 était planté et que je n’avais aucun message d’erreur à cet effet… De retour ce soir en prod !

Auteur : Jonathan Lafleur

Développeur de solutions.

Laisser un commentaire

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