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.channel
和newmember.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 Bot 将语音频道中的所有人静音
当我尝试创建一个角色时,它给了我一个错误(discord.js)