Estoy tratando de obtener los miembros que actualmente están conectados a un canal de voz específico. Con algunas propiedades pude obtenerlos, pero el problema que encontré fue que los miembros que aparecen en la lista no son los que están conectados actualmente, sino los que estaban conectados al canal de voz cuando el bot comenzó a ejecutarse.
Este es mi código (está acortado pero copiado):
const {Client, Intents} = require('discord.js') const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILD_MEMBERS] }) client.on('messageCreate', messagesHandler) function messagesHandler (msg) { if (msg.author.bot) return false; console.log(`Msg received: ${msg.content}`) if (msg.content.startsWith('/')) { const msgArr = msg.content.split(' ') switch (msgArr[0]) { case '/list': listCommand(msg, msgArr) break } } } async function listCommand (msg, msgArr) { if(!msgArr[1]) { const voiceChannel = await getChannel(msg, 'Voice1', true).fetch() if (!voiceChannel) { msg.channel.send('ERROR: Voice1 channel not found') } else { await getCurrentChannelMembers(msg, voiceChannel) } } } function getChannel(msg, channel, voiceChannel = false) { return msg.guild.channels.cache.find(c => c.name === channel && (!voiceChannel || c.isVoice())) } async function getCurrentChannelMembers (msg, channel) { const fetchedChannel = await channel.fetch(true) const members = fetchedChannel.members console.log('Members: ', members) }¡Cualquier ayuda sería apreciada!
Su bot necesita la intención GUILD_VOICE_STATES
const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILD_MEMBERS, Intents.FLAGS.GUILD_VOICE_STATES ] })