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.

Si tu as déjà utilisé Discord, tu sais qu'on peut réagir aux messages des autres. On peut mettre toutes sortes d'emojis, seule notre imagination nous retient.

Pour réagir aux messages, le code est très similaire au code pour répondre à un message. En effet, pour répondre on faisait le suivant:


              bot.on('message', function(msg) {
                // ...
                if ( /* ... */ ) {
                  msg.reply("Hello :)");
                }
              })
            

Pour réagir à un message il suffit d'utiliser msg.react(). Mais il faut faire attention, il faut préciser avec quoi réagir. Et c'est là que cela devient un peu plus compliqué.

Tu vas devoir aller chercker l'emoji avec lequel tu veux réagir. Par exemple, je veux réagir avec l'emoji 🔗. Tu peux aller sur ce site pour copier ton emoji préferé.

Finalement il suffit de le mettre entre guillemets et de la coller en tant que paramètre. Voilà!

Essaie maintenant de réagir avec plusieurs emojis les uns après les autres! 🇧🇹

Imaginons que ton bot veuille répondre à un message mais après 10 minutes. On va donc devoir coder une sorte de "attendre". Heureusement cela existe plus ou moins en JavaScript.

En effet, pour faire quelque chose après 10 minutes, on peut faire ce style de code:


              setTimeout(function() {
                // ....
              }, 1000);
            

Analysons ce code:

  • setTimeout indique qu'on veut mettre un timer
  • .... est le code à executer lorsque le timer est fini
  • 1000 est le nombre de millisecondes à attendre avant d'executer le code

Tu peux donc le placer autour d'un de tes msg.reply() pour faire répondre ton bot après un certain temps. Ton bot pourrait également envoyer un message maintenant et un message dans 10 minutes, pour te rappeller quelque chose!

Imaginons maintenant qu'on veuille que le bot envoie un message si aucun autre message a été envoyé dans les 10 minutes passées. On va alors créer le setTimeout() comme avant, et on va l'effacer quand un nouveau message rentre.

Pour effacer un timeout, il faut le stocker dans une variable. Crée une variable en dehors de toutes tes fonctions, var timeout. Puis lorsque tu utilises le setTimeout(), change le en ceci:


              timeout = setTimeout( /* ... */ );
            

Finalement, lorsqu'un nouveau message rentre, n'importe quel nouveau message (Donc avant les if et les switch), appelle la fonction clearTimeout(timeout).

Ton code ressemble donc à ceci:


              var timeout;

              bot.on('message', function(msg) {
                clearTimeout(timeout);

                if( /* ... */ ) {
                  timeout = setTimeout( /* ... */ );
                }
              })
            

Challenges:

  • Crée un deuxième timeout qui s'active avec un autre message.
  • Crée un troisème message qui envoie un message après 10 minutes dans TOUS les cas.
  • Crée un message qui s'envoie sauf s'il y a un nouveau message dans un canal spécifique (Par exemple le canal 'général').
  • Crée une réaction après un certain temps
  • Crée une réaction après un certain temps, et une deuxième réaction après encore plus de temps