Saya telah menulis bot Discord, merujuk kepada tutorial seperti yang diperlukan kerana saya baru menggunakannya, tetapi saya telah menghadapi masalah yang, walaupun kedengarannya mudah, saya nampaknya tidak dapat menyelesaikannya. Saya cuba melukis papan pendahulu, dan untuk setiap kedudukan pada papan pendahulu, saya ingin mendapatkan avatar pengguna untuk dilukis pada papan pendahulu. Untuk melakukan ini, saya mahu mendapatkan pengguna dengan hanya ID pengguna mereka. Walau bagaimanapun, saya melakukan semua ini dalam satu arahan slash. Berikut ialah contoh yang sangat ringkas untuk memberikan beberapa konteks dan/atau penjelasan yang lebih baik:
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); }); }; }
Saya telah melakukan sedikit penyelidikan dan satu-satunya penyelesaian yang berkesan yang saya temui (yang anda boleh lihat dalam kod sampel di atas) ialah menggunakan const target = interaction.guild.members.cache.get("User_ID") ; Walau bagaimanapun, walaupun saya boleh log nilai pulangan dalam konsol, jika saya cuba melakukan sesuatu seperti "target.user" ia mengatakan sasaran tidak ditentukan. Jika ia membantu, ya saya menyertakan Ahli Persatuan dalam niat saya.
Jika anda hanya ingin mendapatkan ID pengguna yang menjalankan arahan slash, anda boleh menggunakan interaction.user.id.
Untuk mendapatkan pengguna melalui ID, anda boleh menjalankan kod berikut:
//Inside the execute function of the slash command interaction.guild.members.cache.get("user_id").then(function(user){ //Do something with user }
Anda perlu menggunakan ahli.fetch kerana ia tidak segerak, jadi anda perlu menukar forEach anda kepada for...of kerana forEach adalah segerak.
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) } }; }