Wie erhalte ich den Benutzer anhand der Benutzer-ID im Slash-Befehl?
P粉368878176
P粉368878176 2023-07-18 15:47:02
0
2
516

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粉368878176
P粉368878176

Antworte allen(2)
P粉029327711

如果你只想获取运行斜杠命令的用户的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
} 
P粉006977956

你需要使用 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)
       }
   };
} 
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage