> For the complete documentation index, see [llms.txt](https://devcommunity.gitbook.io/bot/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devcommunity.gitbook.io/bot/robot-discord-pas-a-pas/chapitre-2-decouvrez-de-nouvelles-fonctionnalites.md).

# Chapitre 2 - Découvrez de nouvelles fonctionnalités

{% hint style="danger" %}

## MESSAGE IMPORTANT.

Cette documentation n'est plus à jour depuis trop longtemps. Si vous voulez de l'aide, veuillez [rejoindre ce serveur Discord](https://thomasbnt.dev/discord) et [lire cet article](https://thomasbnt.dev/blog/robot-discord-basique) qui date de Septembre 2021 mais qui est fréquemment mis à jour.

Si vous souhaitez un robot pour automatiquement supprimer les insultes, n'hésitez pas à vous renseigner sur [Mr. Robøt](https://mrrobot.app).
{% endhint %}

### Envoyer des messages privés

Pour commencer, on peut demander très rapidement au robot d'envoyer un message privé.

* Testez l'exemple ci-dessous:

{% code title="mp.js" %}

```javascript
if (msg.content.startsWith(prefix + "mp")) {
    msg.author.send("Salut !") // Texte envoyé en message privé par l'auteur de la commande
}
```

{% endcode %}

* Tapez la commande ".mp" dans un salon textuel sur un serveur depuis lequel le robot peut accéder.

![](/files/-LBm3p8uR1EYgROIWf7k)

Par message privé, votre robot aura répondu:

![](/files/-LBm3yIyh0zYnrj78FYg)

Vous pouvez combiner plusieurs réponses, afin d'obtenir le résultat suivant, par exemple:

![Réponse dans le serveur.](/files/-LBm81VDMCyighpfl2Yy)

![Réponse en message privé.](/files/-LBmAMUu6Uonux4cJsr9)

Voici le code source de la commande:

{% code title="help.js" %}

```javascript
if (msg.content.startsWith(prefix + "help")) {
msg.channel.send("La liste des commandes vous a été envoyée en message privé ! :white_check_mark:")
msg.author.send("Liste des commandes disponibles sur le robot:\n\n.help **-** Affiche la liste des commandes disponibles sur le bot.\n.ping **-** Répond à l'utilisateur afin de tetser la réactivité du bot.\n.mp **-** Envoie un message privé à l'utilisateur.\n.markdown **-** Affiche toutes les combinaisons possibles de Markdown sur Discord.")
}
```

{% endcode %}

Vous trouvez peut être que le message n'est pas très esthétique, et oui, on peut faire plus beau !

Pour rendre un message plus joli, vous pouvez utiliser des **embeds**.

Il existe 2 différents type d'embeds:

### Le "petit embed"

Le "petit embed" est vraiment très simple, et permet de rédiger des messages très courts.

{% code title="embed.js" %}

```javascript
if (msg.content.startsWith(prefix + "embed")) {
const embed = {
  color: 3447003,
  description: "Contenu du message."
  }
  msg.channel.send({embed});
  });
```

{% endcode %}

![](/files/-LBmYx4F43xQJAYx2dPr)

### L'embed normal

L'embed normal est le plus utilisé et convient pour à peu près toutes les utilisations.

{% code title="embed.js" %}

```javascript
if (msg.content.startsWith(prefix + "embed")) {
const embed = {
   color: 16746215,
   author: {
     name: msg.author.username,
     icon_url: msg.author.avatarURL
   },
   title: "Titre de l'embed.",
   url: "https://devcommunity.gitbook.io/bot",
   description: "Description de l'embed",
   fields: [{
       name: "Catégories",
       value: "Un embed est divisé en différentes catégories."
     },
     {
       name: "Markdown",
       value: "Markdown, qui a été expliqué dans le chapitre précédent, est utilisable ici."
     },
     {
       name: "Hyperliens",
       value: "Vous pouvez utiliser des hyperliens. Celui-ci mène à [DuckDuckGo](https://duckduckgo.com)."
     }
   ],
   timestamp: new Date(),
   footer: {
     icon_url: client.user.avatarURL,
     text: client.user.username
   }
 }
 msg.channel.send({embed});
});
```

{% endcode %}

![](/files/-LBpLt0Lkh0abxCdoNd_)

En comparant le code et l'image ci-dessus, vous connaissez quels champs affichent quoi et pouvez ainsi créer vos propres embeds.

Merci à [Anidiots Guide](https://legacy.gitbook.com/@anidiotsguide_old) pour la partie embed.

Vos messages seront désormais plus jolis. Mais ne nous arrêtons pas en si bon chemin !

### Expulser un utilisateur

Si votre bot prend en charge des fonctions de modération, la commande pour kick un utilisateur est indispensable. Voici le code pour réaliser une telle fonction :

{% code title="kick.js" %}

```javascript
if (msg.content.startsWith(prefix + "kick")) { // On exécute les instructions en dessous si la commande "kick" est utilisée
    if (msg.member.hasPermission("KICK_MEMBERS")) { // On exécute les instructions en dessous si l'auteur de la commande à la permission d'expulser un utilisateur. Sinon, on exécute les actions présentes à partir de la ligne 7
        let member = msg.mentions.members.first(); // La variable nommée "member" contient désormais comme valeur l'identifiant de la personne à expulser
        member.kick(member); // On expulse l'utilisateur correspondant à l'identifiant trouvé dans la variable "member"
        msg.channel.send(":white_check_mark: " + member.displayName + " a été expulsé(e) !") // On confirme que l'utilisateur a été expulsé (optionnel)
        console.log(msg.author.tag + " a expulsé " + member.displayName + " (" + member + ") du serveur " + msg.guild.name) // On dit dans la console que l'utilisateur a été expulsé (optionnel)
    }   else { // Voir le commentaire de la ligne 2
        msg.channel.send(":x: Vous n'avez pas la permission d'expulser un utilisateur.") // On infome l'auteur de la commande qu'il n'a pas les permissions nécessaires pour effectuer cette action (optionnel)
        console.log(msg.author.tag + " a voulu expulser un utilisateur sur le serveur " + msg.guild.name + ", mais il n'avait pas la permission d'expulser un utilisateur.") // On dit dans la console que l'auteur de la commande n'a pas pu effectuer cette action (optionnel)
    }
}
```

{% endcode %}

### Bannir un utilisateur

Bannir un utilisateur ressemble énormément à la manière dont on expulse un utilisateur. Voici le code de la commande :

{% code title="ban.js" %}

```javascript
if (msg.content.startsWith(prefix + "kick")) { // On exécute les instructions en dessous si la commande "kick" est utilisée
    if (msg.member.hasPermission("KICK_MEMBERS")) { // On exécute les instructions en dessous si l'auteur de la commande à la permission de bannir un utilisateur. Sinon, on exécute les actions présentes à partir de la ligne 7
        let member = msg.mentions.members.first(); // La variable nommée "member" contient désormais comme valeur l'identifiant de la personne à bannir
        member.kick(member); // On bannit l'utilisateur correspondant à l'identifiant trouvé dans la variable "member"
        msg.channel.send(":white_check_mark: " + member.displayName + " a été expulsé(e) !") // On confirme que l'utilisateur a été banni (optionnel)
        console.log(msg.author.tag + " a banni " + member.displayName + " (" + member + ") du serveur " + msg.guild.name) // On dit dans la console que l'utilisateur a été banni (optionnel)
    }   else { // Voir le commentaire de la ligne 2
        msg.channel.send(":x: Vous n'avez pas la permission de bannir un utilisateur.") // On infome l'auteur de la commande qu'il n'a pas les permissions nécessaires pour effectuer cette action (optionnel)
        console.log(msg.author.tag + " a voulu bannir un utilisateur sur le serveur " + msg.guild.name + ", mais il n'avait pas la permission de bannir un un utilisateur.") // On dit dans la console que l'auteur de la commande n'a pas pu effectuer cette action (optionnel)
    }
}

```

{% endcode %}

**Le contenu de cet page n'est pas terminé intégralement. Il sera terminé prochainement.**
