Skip to main content

Chapitre 10 - Gérer une Guild / Faire une recherche

Nous rejoindre sur Discord

Structure

Guild {
  id: '1003624283458785290', // Id du serveur
  name: 'Formation Bot Discord', // Nom du serveur
  icon: 'c2a1d07fd0c51b8c0774461cea51a837', // Icon du serveur
  features: [],
  commands: <ref *1> GuildApplicationCommandManager {  // Liste des commandes
    permissions: ApplicationCommandPermissionsManager {
      manager: [Circular *1],
      guild: [Circular *2],
      guildId: '1003624283458785290',
      commandId: null
    },
    guild: [Circular *2]
  },
  members: GuildMemberManager { guild: [Circular *2] }, // Liste des membres
  channels: GuildChannelManager { guild: [Circular *2] }, // Liste des channels
  bans: GuildBanManager { guild: [Circular *2] }, // Liste des bans
  roles: RoleManager { guild: [Circular *2] }, // Liste des rôles
  presences: PresenceManager {},
  voiceStates: VoiceStateManager { guild: [Circular *2] },
  stageInstances: StageInstanceManager { guild: [Circular *2] },
  invites: GuildInviteManager { guild: [Circular *2] }, // Liste des invitations
  scheduledEvents: GuildScheduledEventManager { guild: [Circular *2] },
  available: true,
  shardId: 0,
  splash: null,
  banner: null, // Bannière
  description: null, // Description
  verificationLevel: 0,
  vanityURLCode: null,
  nsfwLevel: 0,
  premiumSubscriptionCount: 0,
  discoverySplash: null,
  memberCount: 2, // Nombre de membre
  large: false,
  premiumProgressBarEnabled: false,
  applicationId: null,
  afkTimeout: 300,
  afkChannelId: null,
  systemChannelId: '1003624284553478276',
  premiumTier: 0,
  explicitContentFilter: 0,
  mfaLevel: 0,
  joinedTimestamp: 1659379225485,
  defaultMessageNotifications: 0,
  systemChannelFlags: SystemChannelFlagsBitField { bitfield: 0 },
  maximumMembers: 500000,
  maximumPresences: null,
  approximateMemberCount: null,
  approximatePresenceCount: null,
  vanityURLUses: null,
  rulesChannelId: null,
  publicUpdatesChannelId: null,
  preferredLocale: 'en-US', // Localisation du serveur
  ownerId: '279989640210022401', // ID du propriétaire
  emojis: GuildEmojiManager { guild: [Circular *2] },
  stickers: GuildStickerManager { guild: [Circular *2] }
}

Faire une recherche

Lorsque l'on souhaite récupérer un élément dans une collection (/liste) présent dans notre guild. On va utiliser .cache.find(). Cette suite de méthodes nous permet d'aller regarder dans notre collecion et d'y ajouter un condition de recherche. Par exemple, si l'on souhaite récupéré un utilisateur depuis son ID, on peut faire :

const userId = ""; // ID de l'utilisateur à trouver.
const user = guild.members.cache.find(member => member.id === userId);

L'utilisation de notre find nous permet de raccourcir les instructions suivantes :

const user = null;
for (const member in guild.members.cache) {
 if (member.id === userId) {
   user = member;
 }
}

Exercice

Afficher la taille d'un message v2.0 (Moyen)

Nous allons améliorer la commande qui permettait de récupérer le nombre de caractères dans un message. Modifier la commande pour permettre à l'utilisateur s'il le souhaite d'entrer l'id d'un message envoyé dans le même channel où la commande va être utilisée et compter le nombre de caractère de celui-ci. (Attention, si l'utilisateur entre un message texte directement dans l'option, alors il faudra calculer la longueur du texte).