Faire son propre chatbot en toute simplicité.

Quelques robots connus illustrés
Mauro Santos

Mauro Santos Développeur · Full Stack septembre 2024

Il y a quelques années, avec l’avènement de l’IA, les robots ont commencé à devenir très populaires. Les gens espéraient que les robots allaient défier le présent et aider à bâtir un futur meilleur. Pendant ce temps, nous avons vu à la fois l’ascension et la chute de plus d’un compagnon robotique. Mais aujourd’hui, nous sommes toujours là à attendre cet avenir plus radieux.

La tendance s’est installée et a fini par disparaître, mais la connaissance est quelque chose qui perdure et il n’est jamais trop tard pour l’acquérir. Et la meilleure façon d’en apprendre davantage sur les robots, c’est d’en construire un !

Ce que je vous propose:
À la fin de l’article, vous vous serez familiarisé avec les robots, et vous en aurez construit un vous-même (vous pourrez en choisir le nom en plus), et vous pourrez surtout l’améliorer pour qu’il fasse ce que vous rêvez. Construisons donc un avenir meilleur !

Ce que cela va vous demander:
Nous allons le construire en utilisant le langage JavaScript. Vous n’avez pas besoin d’être un pro, mais au moins posséder quelques connaissances concernant JavaScript, Node.js, et npm. Vous devrez également avoir quelques connaissances de base sur la ligne de commande. Je vais essayer de garder les choses aussi simples que possible et de tout vous montrer étape par étape.

 

 

Aujourd’hui, nous allons construire un chatbot pour l’application Telegram.
Si vous demandez à Wikipédia, ils vous raconteront que Telegram est un service de messagerie instantanée créé par Pavel Durov et son frère Nikolaï. Heureusement pour nous, ils accueillent très favorablement les robots et ont rendu très facile l’ajout d’un robot à la plate-forme.

 

 

 

 

Allons-y!

Tout d’abord… ouvrez votre terminal et commencez par créer un dossier pour votre compagnon. Vous remarquerez que toutes les commandes que j’écris sur mon terminal sont écrites sur les lignes avec une flèche et dans ce cas précis, www est le dossier que j’utilise pour conserver tous mes projets.

Vous pouvez toujours créer un dossier ou un fichier à la main, mais vous devrez à terme utiliser le terminal. Pourquoi ne pas commencer maintenant ?
 

Après avoir navigué vers votre dossier fraîchement créé, initialisez le projet avec npm. Ceci crée un fichier appelé package.json pour stocker certaines informations (nom, version, description, …).

Comme nous ne réinventerons pas la roue (ou du moins, je ne le souhaite pas), nous utiliserons une bibliothèque préexistante appelée node-telegram-bot-api pour nous connecter à Telegram. Pour l’utiliser sur votre projet, il vous suffit de l’installer.

L’installation d’un paquet se fait toujours de la même manière – npm install nom-du-paquet, ou juste « i » au lieu de « install ».
 

Ensuite, à l’intérieur de votre projet, créez un fichier pour votre code appelé « index.js » (ou n’importe quoi d’autre vraiment, mais n’oubliez pas d’exécuter le fichier approprié plus tard) et nous devrions être prêts à commencer à coder.

… Et c’est parti !

Nous voici avec une toile vierge, prête à accueillir un chef-d’œuvre. Vous verrez que j’ai mes fichiers à gauche et mon éditeur à droite. Voici à quoi devrait ressembler votre dossier :

Le projet dans l’éditeur Visual Studio Code

 

Pour commencer simplement, on peut copier-coller l’exemple donné par node-telegram-bot-api. Si vous le faites, vous obtenez ce qui suit :

Presque fini mais pas encore… Si vous regardez attentivement, vous remarquerez qu’à la ligne 4, un token est requis.

 

Trouvons-nous un token.

Pour obtenir un token, vous devez être connecté sur Telegram et ensuite parler au BotFather. Le BotFather est un bot (?). C’est l’entité responsable de la gestion des robots sur la plate-forme. Donc, quand vous avez besoin de créer un bot, vous allez devoir lui parler.

En avant!

Pour commencer, cliquez sur Démarrer et une liste des commandes disponibles vous sera présentée.

Tout ce que le BotFather peut faire pour vous
 

Pour créer un nouveau bot, cliquez sur /newbot. Le BotFather vous demandera de choisir un nom (le mien s’appelle pinky) et un nom d’utilisateur (j’ai choisi pinkyTheBot).

On dirait qu’on a un token !

 


Je peux officiellement vous présenter Pinky!
Pinky est probablement le meilleur bot au monde ! Il ne fera pas grand-chose, mais ce qu’il fera sera d’une perfection absolue ! Je suis sûr que votre Pinky atteindra la même perfection !

Très bien, nous avons maintenant le token. Tout ce qui nous reste à faire est de revenir en arrière et de le coller sur la 4ème ligne de notre code, comme ça :

Tout est prêt!

 

Parés ? Prêts ? Partez !

Si tout s’est bien passé, vous pouvez démarrer Pinky ! (la commande est avec node index.js). Pour sortir à tout moment, il n’est pas nécessaire de fermer le terminal, il suffit de faire un CTRL+C.

Vous pouvez ignorer les avis d’obsolescence

 

Si vous allez dans Telegram et cherchez votre bot, vous devriez l’y trouver. Puisque le mien s’appelle pinkyTheBot, c’est ce que nous allons chercher. Quand vous le faites, si vous cliquez sur /start, vous devriez recevoir un message de Pinky disant qu’il a reçu votre message et ça c’est notre code qui fonctionne !

ET téléphone maison…

 

Si vous avez réussi à suivre jusqu’ici, bien joué ! Si vous regardez le code, vous verrez que la seule chose que le bot peut faire pour le moment, c’est de faire écho à un message (lignes 9 à 20). C’est facile à tester, à chaque fois que vous envoyez un message comme /echo random message, vous devriez obtenir une réponse avec le même message aléatoire.

Un robot en parfait état de marche ! Mais bien inutile aussi !

 

Voilà, c’est fini !

J’espère que vous avez aimé cet article et que vous avez appris quelque chose de nouveau en cours de route… mais si j’étais vous, je ne serais pas entièrement satisfait… après tout, Pinky n’est pas utile du tout . Alors, comme dans un bon film de super-héros, on vous propose des « after-credits ».

 

Chapitre supplémentaire : Pinky fait d’une pierre deux coups

Je fais partie de ces gens pour qui les couleurs s’arrêtent au rouge, bleu, vert, jaune, noir, blanc…. Mais « apparemment », parfois le rouge n’est pas rouge mais magenta ou violet-rouge ou d’autres tons rougeâtres. Ça en devient confus et je ne sais jamais comment nommer une couleur. Arrangeons ça, ou mieux, apprenons à Pinky à nous dire le nom de certaines couleurs et à réaliser l’idée du proverbe « d’une pierre, deux coups » !

Incapable de nommer les couleurs, Pinky utilisera un paquet de npm appelé color-namer pour le faire. Tout comme avant, pour installer un paquet, il suffit de le faire depuis la ligne de commande.

Oh super ! Encore installer quelque chose…

 

Pour faire le ménage de Pinky, j’ai enlevé toutes les choses inutiles (plus de /echo ou message reçu). Je lui ai aussi appris sa nouvelle compétence et en prime, nous avons encore moins de lignes de code. D’avantage d’espace pour respirer !

Pour créer sa nouvelle compétence, j’ai d’abord importé la nouvelle bibliothèque (ligne 1) et ensuite, j’ai dit à Pinky de répondre à la commande /color #ff0000 (commençant à la ligne 11). Tout ce qu’il fait est simplement prendre la couleur hexadécimale du message reçu et de l’envoyer à la bibliothèque que nous avons installée auparavant. Maintenant, si vous essayez la nouvelle commande, vous devriez obtenir le nom de la couleur en réponse.

#333 et #ff0000 sont les couleurs que vous souhaitez nommer

 

Maintenant, c’est vraiment fini !

Je vous laisse tout de même quelques devoirs :

  • Rafraîchissez vos connaissances en javascript s’il le faut.
  • Ajoutez des commandes simples au bot. Par exemple, /status devrait répondre en ligne ; /name devrait répondre avec son nom, …
  • Ajoutez des commandes utiles (plus difficiles) pour obtenir votre planning de la journée à partir du calendrier Google, l’horaire des prochains trains pour rentrer chez vous, …
  • Ajoutez un moyen d’être informé automatiquement de la météo du lendemain, pour ne pas oublier votre parapluie, …
  • Convertissez votre bot pour d’autres plateformes: Slack, Twitter, ou même email (pourquoi pas ?).

J’espère que vous en avez appris davantage grâce à cette petite introduction au développement d’un chatbot.