Skip to main content

Chapitre 7 - Les utilisateurs

Nous rejoindre sur Discord

Dans ce chapitre, nous allons voit comment fonctionne un utilisateur. Quels sont les interactions que l'on peut faire avec.

Retrouvez l'ensemble des informations sur les utilisateurs dans : discord.js - GuildMember

Structure de l'utilisateur

GuildMember { // Information sur l'utilisateur
  guild: <ref *1> Guild { // Information sur la guild ou est présent l'utilisateur lors de l'utilisationde la commande
    id: '1003624283458785290',
    name: 'Formation Bot Discord',
    icon: 'c2a1d07fd0c51b8c0774461cea51a837',
    features: [],
    commands: GuildApplicationCommandManager {
      permissions: [ApplicationCommandPermissionsManager],
      guild: [Circular *1]
    },
    ...
  },
  joinedTimestamp: 1659353075815, // Date à laquelle le joueur à rejoint le serveur
  premiumSinceTimestamp: null, // Depuis quand l'utilisateur boost le serveur
  nickname: null, // L'utilisateur à modifier son pseudo
  pending: false, // L'utilisateur n'a pas validé le règlement (Communauté Discord)
  permissions : {}, // Permission de l'utilisateur
  communicationDisabledUntilTimestamp: null,
  _roles: [], // Liste des rôles que possède l'utilisateur
  user: User { // Information sur le compte
    id: '279989640210022401', // Id du compte
    bot: false, // L'utilisateur est un bot
    system: false, // Utilisateur officiel du système Discord
    flags: UserFlagsBitField { bitfield: 0 },
    username: 'Aros', // Nom de l'utilisateur
    discriminator: '2022',
    avatar: 'de8d06d7370b2cfb33916cc84f6bea83', // Avatar utilisé
    banner: undefined, // L'utilisateur à une bannière
    accentColor: undefined
  },
  avatar: null // L'utilisateur à modifier son avatar
}

Fonctionnalités utiles

Nous allons vous montrer quelques fonctionnalités utiles que vous pouvez être amenée à utiliser.

Lorsque l'on débute le développement d'un bot Discord, la grande majorité des éléments que l'on recherche sont disponible sur internet. Si vous ne savez pas comment utilisé une fonction ou récupérer une information, regarder sur internet 😉.

Envoyer un message privé : send()

user.send({
  content: "Mon message",
});

Vérifier les permissions : Pour vérifier les permissions d'un utilisateur, nous utiliserons la classe PermissionsBitField. Voici un exemple de code pour vérifier si un utilisateur à des permissions administrateurs :

const { PermissionsBitField } = require('discord.js');

if (user.permissions.has(PermissionsBitField.Flags.Administrator)) {
  // instructions
}

Gérer les rôles d'un utilisateur : la gestion des rôles d'un utilisateur peut se faire de plusieurs façons. On peut utiliser .roles et ._roles

  • Avec ._roles, on obtient un tableau des id des rôles que possède l'utilisateur sur le serveur
  • Avec .roles, on récupère le GuildManager des rôles de l'utilisateur sur le serveur. En général, pour interagir avec les rôles d'un utilisateur, nous utiliserons la propriété .roles._methode() qui correspond à une collection. On pourra alors faire une recherche de rôle, en ajouter, en supprimer, etc...

Autres fonctionnalités :

if (user.bannable) { // L'utilisateur peut se faire ban par le bot
  // instructions
}

await user.setNickName('nouveau nom'); // Changer le nom de l'utilisateur sur le serveur

// Cette liste sera mise à jour en fonction des différents retour des demandes.

Les rôles

Voici un affichage rapide de la structure d'un rôle :

 Role {
    guild: Guild {
      id: '1003624283458785290',
      name: 'Formation Bot Discord',
      icon: 'c2a1d07fd0c51b8c0774461cea51a837', 
      features: [],
      commands: [GuildApplicationCommandManager],
      members: [GuildMemberManager],
      channels: [GuildChannelManager],
      bans: [GuildBanManager],
      roles: [RoleManager],
      presences: PresenceManager {},
      ...
    },
    icon: null,
    unicodeEmoji: null,
    id: '1004374878880813177',
    name: 'Nouveau rôle',
    color: 15844367,
    hoist: false,
    rawPosition: 1,
    permissions: PermissionsBitField { bitfield: 1071698660929n },
    managed: false,
    mentionable: false,
    tags: {}
  }

discord.js.org - Role


Exercice

Manager de rôles (Facile)

Créer une commande qui permet d'ajouter un role ou de supprimer le role d'un utilisateur.