suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie erhalte ich den Benutzer anhand der Benutzer-ID im Slash-Befehl?

Ich habe einen Discord-Bot geschrieben und bei Bedarf auf Tutorials verwiesen, da ich neu darin bin, aber ich bin auf ein Problem gestoßen, das ich, obwohl es einfach klingt, scheinbar nicht lösen kann. Ich versuche, eine Bestenliste zu zeichnen, und für jede Position in der Bestenliste möchte ich, dass der Avatar des Benutzers in die Bestenliste eingezeichnet wird. Dazu möchte ich den Benutzer nur anhand seiner Benutzer-ID ermitteln können. Allerdings erledige ich das alles in einem einzigen Slash-Befehl. Hier ist ein sehr vereinfachtes Beispiel, um einen Kontext und/oder eine bessere Erklärung bereitzustellen:

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

Ich habe ziemlich viel recherchiert und die einzige funktionierende Lösung, die ich gefunden habe (die Sie im Beispielcode oben sehen können), ist die Verwendung von const target = interaction.guild.members.cache.get("User_ID") ; Obwohl ich den Rückgabewert in der Konsole protokollieren kann, heißt es, dass das Ziel undefiniert ist, wenn ich versuche, etwas wie „target.user“ zu tun. Wenn es hilft, ja, ich beziehe Gildenmitglieder in meine Absicht mit ein.

P粉368878176P粉368878176505 Tage vor520

Antworte allen(2)Ich werde antworten

  • P粉029327711

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

    如果你只想获取运行斜杠命令的用户的ID,你可以使用 interaction.user.id。

    要通过ID获取用户,你可以运行以下代码:

    //Inside the execute function of the slash command
    
    interaction.guild.members.cache.get("user_id").then(function(user){
        //Do something with user
    } 

    Antwort
    0
  • P粉006977956

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

    你需要使用 members.fetch,因为它是异步的,所以你需要将你的 forEach 改为 for...of,因为 forEach 是同步的。

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

    Antwort
    0
  • StornierenAntwort