【发布时间】:2021-01-28 05:05:42
【问题描述】:
我目前正在尝试为我的服务器制作一个机器人,我想做的一件事是让它检测用户何时加入任何语音频道并让它发送消息。我个人无法弄清楚或在互联网上找到任何答案,因为大多数时候人们是根据命令检测它,而我希望它是被动的。我知道 voiceStateUpdate 已更改,并且有些事情与我过去看到其他人使用它的方式不同。
如果有人有任何解决方案,请告诉我,谢谢。
【问题讨论】:
标签: discord discord.js
我目前正在尝试为我的服务器制作一个机器人,我想做的一件事是让它检测用户何时加入任何语音频道并让它发送消息。我个人无法弄清楚或在互联网上找到任何答案,因为大多数时候人们是根据命令检测它,而我希望它是被动的。我知道 voiceStateUpdate 已更改,并且有些事情与我过去看到其他人使用它的方式不同。
如果有人有任何解决方案,请告诉我,谢谢。
【问题讨论】:
标签: discord discord.js
client.on('voiceStateUpdate', (oldState, newState) => {
if(newState.channelID === null) //left
console.log('user left channel', oldState.channelID);
else if(oldState.channelID === null) // joined
console.log('user joined channel', newState.channelID);
else // moved
console.log('user moved channels', oldState.channelID, newState.channelID);
});
【讨论】:
在 discord.js v.12 中,您需要使用的侦听器确实是 voiceStateUpdate。它有参数oldState 和newState。有了这些,您可以检测到很多东西,包括 member 对象。
使用它,您可以使用类似的方法来检测用户或机器人是否正在连接或断开语音通道。
client.on('voiceStateUpdate', (oldState, newState) => {
// check for bot
if (oldState.member.user.bot) return;
// the rest of your code
})
【讨论】: