如何在 discord.js V12 中等待获取 X 人的所有语音频道?

Posted

技术标签:

【中文标题】如何在 discord.js V12 中等待获取 X 人的所有语音频道?【英文标题】:How to await to fetch all voice channels with X people in discord.js V12? 【发布时间】:2021-03-01 10:47:00 【问题描述】:

我正在使用 discord.js V12 制作一个 Discord 机器人。我想发出命令等待以获取 X 人或更多人的所有频道,但我不熟悉等待和获取。到目前为止,这是我的代码:

命令:

    else if (command === 'find') 
        if (!args.length) 
            const findHelp = new Discord.MessageEmbed()
            .setTitle('Finding')
            .setDescription('Help')
            .addField('Usage', 'Find a free spot on a voice channel & automaticly join for best Among Us experience!')
            .addField('Commands', '`/find <members>` Find a voice channel with minimum of `<members>` people in it.')
            .setColor(0xE92323);
            message.channel.send(findHelp);
         else if (args.length === 1) 
            const memberMin = args[0];
            const channel = await (fetch(channels.first.members.length(memberMin)))
            message.author.join(channel);
        
    

我尝试不等待或获取,但它仍然不起作用,同时给出错误。

感谢您花时间帮助我:)

【问题讨论】:

【参考方案1】:

假设您的消息来自公会,您可以使用频道缓存。

const memberMin = args[0]
const voiceChannels = message.guild.channels.cache.filter(c => c.type == 'voice') // Collection<VoiceChannel>

const yourVoiceChannels = voiceChannels.filter(c => c.members.length >= memberMin) // Collection<VoiceChannel>

如果您已编辑缓存行为,则需要先获取频道和/或公会,然后再读取它们的属性。你可以这样做,例如:

const guild = await message.guild.fetch()

【讨论】:

我认为它会起作用,但我还有另一个问题 - 如何将消息作者发送到第一个获取的频道?我试过message.member.voice.setChannel(yourVoiceChannels.first());,但它不起作用并且没有给出错误。

以上是关于如何在 discord.js V12 中等待获取 X 人的所有语音频道?的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js v12 如何获取对特定消息做出反应的人的 id?

如何将服务器中每个用户的 id 放入数组中? (Discord.js v12)

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?

如何在 discord.js v12 中列出所有公会成员

如何定位文件 discord.js v12?

如何从用户 discord.js v12 中删除所有角色?