我正在尝试创建一个机器人,如果特定的人将自己静音,则该服务器会将所有人静音。
我可以通过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)
})
但是我不明白,它只是返回未定义的。
答案 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,流式传输等等