Maison  >  Questions et réponses  >  le corps du texte

Comment obtenir l'utilisateur par identifiant dans la commande slash ?

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粉368878176P粉368878176460 Il y a quelques jours477

répondre à tous(2)je répondrai

  • P粉029327711

    P粉0293277112023-07-19 15:38:14

    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
    } 

    répondre
    0
  • P粉006977956

    P粉0069779562023-07-19 12:06:11

    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)
           }
       };
    } 

    répondre
    0
  • Annulerrépondre