【问题标题】:How to detect when a user joins a voice channel?如何检测用户何时加入语音频道?
【发布时间】:2021-01-28 05:05:42
【问题描述】:

我目前正在尝试为我的服务器制作一个机器人,我想做的一件事是让它检测用户何时加入任何语音频道并让它发送消息。我个人无法弄清楚或在互联网上找到任何答案,因为大多数时候人们是根据命令检测它,而我希望它是被动的。我知道 voiceStateUpdate 已更改,并且有些事情与我过去看到其他人使用它的方式不同。

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

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:
    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);
    });
    

    【讨论】:

      【解决方案2】:

      在 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
      })
      

      【讨论】:

      • 非常感谢,由于某种原因,我过于复杂了哈哈。
      • 先查看文档总是一个好主意 :)
      • 这并没有说明如何判断它们是断开连接还是连接,只是两者之一。文档没有说,因为它通常很糟糕。
      • @stackers 看看this 能不能帮到你
      猜你喜欢
      • 2021-10-22
      • 2021-02-28
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 2021-02-10
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多