Avant d'entamer ce défi, assure toi d'avoir déjà fait ceux ci:

Ensuite, assure-toi que tu sois bien connecté à ton compte Repl.It, et que tu aies ton projet de la fois passée.

Aujourd'hui on va ajouter une functionalité intéressante à notre bot! Il va pouvoir mentionner quelqu'un. Par example, lorsque je dis "David" dans un message, notre bot va automatiquement taguer le compte de David.

En réalité, cela n'est pas bien dur! Rappellons qu'on peut envoyer des messages avec les deux codes suivats:


              // Répondre au message (Taguer celui qui l'a envoyé)
              msg.reply("Pong"); // => "@DanielCortild Pong"

              // Simplement envoyer un message
              msg.channel.send("Pong"); // => "Pong"
            

Mais pour l'instant, on n'a pas de solutions pour taguer quelqu'un d'autre. En réalité, c'est bien simple! On va répondre avec un "@DanielCortild" au début du message!

Bon ce n'est quand même pas aussi facile! Imaginons il y a deux "DanielCortild" sur le serveur... Lequel choisir? On va donc se servir de l'ID de l'utilisateur qu'on veut taguer. Pour le trouver, fait un clique droit sur l'utilisateur que tu veux taguer et copie l'ID. Alors on écrit comme ceci:


              // Pour taguer @DanielCortild
              msg.channel.send("<@414179403694866432> Je t'ai tagué"); => "@DanielCortild Je t'ai tagué"
            

Super on peut taguer un utilisateur maintenant!!

On peut aussi vérifier si un utilisateur tague quelqu'un! Pour ce faire, on va utiliser un autre attribut de msg.

Pour vérifier si un message tague un utilisateur, on vérifie si son ID fait partie du message. Pour vérifier si un texte appartient à un message on fait comme suit:


              if(msg.content.includes("414179403694866432")) {
                // ...
              }
            

Challenge: Fait en sorte que lorsqu'un utilisateur tagues une personne, le bot réponds qu'il n'est pas disponible mais qu'il peut essayer de parler avec une autre personne, et taguer cette autre personne.

On va maintenant essayer d'envoyer des GIFS. Ceci n'est pas une tâche simple, mais on va essayer du mieux que l'on le peut.

D'abord, va trouver un GIF que tu aimes bien sur Giphy. C'est leur base de données qu'on va utiliser pour notre bot.

Quand tu as trouvé ton GIF préferé, appuies sur "Copy Link", puis copies le "Short Link". Il ressemble à ceci:


              // https://gph.is/g/Zy6N6jn
            

Essaie de simplement envoyer ce lien dans Discord (Sans ton bot). Normalement tu verra le GIF apparaître. Essaie mainteannt de faire envoyer ce lien avec ton bot!

Bon c'est super de pouvoir envoyer un GIF, mais imaginons on veut donner accès à l'utilisateur de rechercher un GIF. Alors on doit faire en sorte que le bot aille d'abord rechercher le GIF dans la base de données de Giphy, et ensuite nous le montre.

Pour que cela puisse marcher, on doit en fait envoyer une demande au serveur de Giphy. Ceci s'appelle une requête, et on envoit cette requête à un API. Le API va alors nous répondre avec différents liens qu'on peut utiliser.

Pour communiquer avec des API, on utilise la fonction fetch. Pour pouvoir l'utiliser, on commence par l'importer.

              const fetch = require('node-fetch');
            

Ceci doit apparaître en haut du code.

Ensuite on va devoir rechercher sur un lien. Ce lien est un peu compliqué, donc je vous le donne!


              "https://api.giphy.com/v1/gifs/search?api_key=XXXXXXX&q=chats"
            

Ce lien est partagé en plusieurs parties:

  • 'https://api.giphy.com/' nous indique qu'on travaille sur le API de Giphy.
  • 'v1/gifs/search' nous indique qu'on recherche des gifs.
  • '?api_key=XXXXXXX' nous indique la clé secrète qu'on utilise. Demande là à ton animateur!
  • '&q=chats' indique qu'on recherche des gifs de chats.

Pour rechercher des gifs, on fait alors comme ceci:


              fetch("https://api.giphy.com/v1/gifs/search?api_key=XXXXXXX&q=chats")
                .then(function (response) {
                  return response.json();
                })
                .then(function (response) {
                  msg.channel.send(response.data[0].url);
                });
            

Je peux admettre que ceci fait peur, et c'est en effet du code compliqué! Je te conseille donc de simplement copier-coller ce code!

Ce lien va nous donner un gif avec un chat. Pour changer ce qu'on voit, on peut faire comme ceci:


              "https://api.giphy.com/v1/gifs/search?api_key=XXXXXXX&q=" + "chats"
            

Ou encore, pour rechercher le deuxième mot dans notre message:


              "https://api.giphy.com/v1/gifs/search?api_key=XXXXXXX&q=" + msg_sep[1]
            

Tu devrais maintenant pouvoir afficher toute sortes de gifs!

Pour que ton bot soit toujours actif, nous allons devoir ajouter un peu de code.

En haut de ton code, écris ceci:


              const express = require('express');
              const app = express();
              app.get('/', (req, res) => res.send("En vie"));
              app.listen(3000);
            

Quand tu lances ton code, tu verra "En vie" sur la page. Copie alors le lien et envoie le à ton animateur. Il va le mettre sur un service qui s'appelle Uptime, qui garde ton bot en ligne tout le temps.

Voilà, ton code sera actif maintenant tout le temps!!