Chapitre 10 - Gérer une Guild / Faire une recherche
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).