如何检测用户何时加入语音通道?

时间:2020-10-13 19:58:30

标签: discord discord.js

我目前正在尝试为服务器制作一个机器人,而我想做的一件事情就是让它在用户加入任何语音通道时检测到它,并使其简单地发送一条消息。我个人无法弄清楚它,也无法在互联网上找到任何答案,因为在大多数情况下,人们希望基于命令来检测它,而我却希望它是被动的。我知道voiceStateUpdate已经更改,有些事情与我过去看到的其他用法有所不同。

如果有人有任何解决方案,请告诉我,谢谢。

2 个答案:

答案 0 :(得分:1)

在discord.js v.12中,您需要使用的监听器确实是voiceStateUpdate。它具有参数oldStatenewState。使用这些工具,您可以检测到许多东西,包括member对象。

您可能会使用类似的方法来检测用户或漫游器是否正在连接或断开语音通道。

client.on('voiceStateUpdate', (oldState, newState) => {
    // check for bot
    if (oldState.member.user.bot) return;

    // the rest of your code
})

答案 1 :(得分:1)

client.on('voiceStateUpdate', (oldState, newState) => {
    if (newState.channelID === null) console.log('user left channel', oldState.channelID);
    else if (oldState.channelID === null) console.log('user joined channel', newState.channelID);
    else console.log('user moved channels', oldState.channelID, newState.channelID);
});