【问题标题】:How to get users in voice channel without cache in DiscordJS?如何在 DiscordJS 中让用户进入没有缓存的语音通道?
【发布时间】:2022-07-07 20:24:23
【问题描述】:

我正在尝试让所有用户进入我的服务器中的语音通道。当有人在#general 中与机器人交谈时,我想让用户进入语音通道 1。 我正在使用 Node 17 和 DiscordJS 13

这是我的代码:

message.guild.channels.fetch(channelID, {cache: false, force: true}).then(channels => {
    console.log(channels.members);
});

另外,我试过这个:

let voiceChannel = client.guilds.cache.get(process.env.DISCORDJS_GUILD_ID).channels.cache.get(process.env.DISCORDJS_CHANNEL_ID);
let membersInChannel = voiceChannel.members;
console.log(membersInChannel);

但是,它总是返回我启动节点应用程序时加入的语音频道用户。如果有人离开语音频道,当我在#general 中对机器人说些什么时,它会一直在 console.log 中显示他。我怎样才能做到这一点?

【问题讨论】:

  • 我找到了this,它对我有用

标签: javascript node.js discord discord.js


【解决方案1】:

我也遇到了同样的问题。虽然我在fetch 中添加了{ force: true } 作为选项,但当我启动应用程序时,它总是显示相同数量的成员,忽略加入/离开频道的人。

启用GUILD_VOICE_STATES intent 解决了这个问题。所以别忘了把它添加到你的client:

const { Client, Intents } = require('discord.js');
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_VOICE_STATES,
  ],
});

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2022-07-06
    • 2020-08-22
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2019-10-12
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多