Discord.js-检查用户是否静音/静音更改

时间:2020-09-27 12:56:25

标签: discord discord.js

我正在尝试创建一个机器人,如果特定的人将自己静音,则该服务器会将所有人静音。

我可以通过message.member获取用户ID或其他详细信息。 有什么方法可以找出该用户是否被静音,或者该人是否在语音通道中?

这是我到目前为止发现的:

client.on('voiceStateUpdate', (oldmember, newmember) => {
   let oldvoice = oldmember.voiceChannel;
   let newvoice = newmember.voiceChannel;
   if (oldvoice && newvoice && oldvoice.id != newvoice.id) 
      var channelStatus = 'Moved'

   console.log(oldvoice)
})

但是我不明白,它只是返回未定义的。

1 个答案:

答案 0 :(得分:0)

编辑:找到了一种更简单的解决方案:

msg.member.voice.selfMute

旧的:

client.channels.cache.get(msg.member.voice.channel.id).guild.voiceStates.cache.get(msg.author.id).selfMute

让我们分解一下:
client.channels.cache 为您提供不和谐服务器中的所有文本和语音通道
get(msg.member.voice.channel.id)为您提供语音通道的ID,即编写bot命令的用户(考虑到,您已将消息存储在变量中,例如:msg)
.guild.voiceStates.cache 为您提供了频道中所有人的列表
.get(msg.author.id)接受写了最后一条消息的用户
.selfMute 返回静音状态

btw还有其他非常有用的东西,例如selfDeafen,流式传输等等