Comment obtenir l'utilisateur par identifiant dans la commande slash ?
P粉368878176
P粉368878176 2023-07-18 15:47:02
0
2
519

J'ai écrit un bot Discord, en me référant à des tutoriels si nécessaire depuis que je suis nouveau dans ce domaine, mais j'ai rencontré un problème que, même si cela semble simple, je n'arrive pas à résoudre. J'essaie de dessiner un classement, et pour chaque position dans le classement, je souhaite que l'avatar de l'utilisateur s'affiche dans le classement. Pour ce faire, je souhaite pouvoir obtenir l'utilisateur uniquement grâce à son identifiant. Cependant, je fais tout cela avec une seule commande slash. Voici un exemple très simplifié pour fournir un peu de contexte et/ou une meilleure explication :

const { SlashCommandBuilder, AttachmentBuilder } = require('discord.js');
// ... some functions and what not go here
module.exports = {
   //... lines for setting up the command go here

   async execute(interaction){
       const data = fetchData();  //A function that gets the whole list of data; did not put it in the codeblock to save on space since it's not necessary
       // ... a bunch of stuff, ordering my data, etc.
       data.forEach(async (userData, index) => {
          // And here begins my issue. The line below is just what I have attempted to do
          const target = interaction.guild.members.cache.get(userData.UserId); 
       });
   };
}

J'ai fait pas mal de recherches et la seule solution efficace que j'ai trouvée (que vous pouvez voir dans l'exemple de code ci-dessus) est d'utiliser const target = interaction.guild.members.cache.get("User_ID") ; Cependant, bien que je puisse enregistrer la valeur de retour dans la console, si j'essaie de faire quelque chose comme "target.user", cela indique que la cible n'est pas définie. Si cela peut aider, oui, j'inclus GuildMembers dans mon intention.

P粉368878176
P粉368878176

répondre à tous(2)
P粉029327711

Si vous souhaitez simplement obtenir l'ID de l'utilisateur qui a exécuté la commande slash, vous pouvez utiliser interaction.user.id.

Pour obtenir l'utilisateur par identifiant, vous pouvez exécuter le code suivant :

//Inside the execute function of the slash command

interaction.guild.members.cache.get("user_id").then(function(user){
    //Do something with user
} 
P粉006977956

Vous devez utiliser Members.fetch car il est asynchrone, vous devez donc changer votre forEach en for...of car forEach est synchrone.

const { SlashCommandBuilder, AttachmentBuilder } = require('discord.js');
// ... some functions and what not go here
module.exports = {
   //... lines for setting up the command go here

   async execute(interaction) {
       const data = fetchData();  //A function that gets the whole list of data; did not put it in the codeblock to save on space since it's not necessary
       // ... a bunch of stuff, ordering my data, etc.
       for (const userData of data) {
         const target = await interaction.guild.members.fetch(userData.UserId)
       }
   };
} 
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal