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

Posted

技术标签:

【中文标题】Discord.js - 检查用户是不是静音/静音更改【英文标题】:Discord.js - Check if user is muted / mute changeDiscord.js - 检查用户是否静音/静音更改 【发布时间】:2021-01-13 05:46:43 【问题描述】:

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

我可以通过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)
)

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

【问题讨论】:

你使用的是什么版本的 Discord.js? 我怎么知道?我想我正在使用最新的。 如果你使用V12,试试这个:oldmember.voice.channelnewmember.voice.channel 刚查了一下,我用的是V12.3.1,不过没关系,因为我自己找到了办法。我马上就贴出来。 它给了我一个错误,说无法读取未定义的属性通道... 【参考方案1】:

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

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,即编写机器人命令的用户(考虑到您已将消息存储在变量中,例如:msg).guild.voiceStates.cache 为您提供频道中所有人的列表.get(msg.author.id) 获取撰写最后一条消息的用户.selfMute 返回静音状态

顺便说一句,还有其他非常有用的东西,比如 selfDeafen、流媒体等等

【讨论】:

以上是关于Discord.js - 检查用户是不是静音/静音更改的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 机器人,临时静音命令不会静音

使用 Discord.js 使用 Discord Bot 将语音频道中的所有人静音

当我尝试创建一个角色时,它给了我一个错误(discord.js)

检查系统音量是不是静音

Discord.js:message.guild.channels.forEach 不是函数

有没有办法用 discord.js 检测不和谐的玩家 self_muted