【发布时间】:2021-02-28 03:05:13
【问题描述】:
我正在 v12 上制作一个 Discord.js 机器人,其中包含一个静音命令,该命令可将您所在的整个语音频道静音。问题是当有人离开频道时,他们会保持静音。我正在尝试通过一个简单的事件来解决此问题以取消静音,但我不理解VoiceStateUpdate 和OldState 和NewState。我已经广泛搜索,但我只能找到一个加入VC,而不是离开。这是我到目前为止得到的:
静音命令:
else if (command === 'mute') {
message.delete()
if (!message.member.roles.cache.has('') && !message.member.roles.cache.has('')) {
message.reply('You don\'t have permission to use this commmand!')
.then(message => {
message.delete({ timeout: 5000 })
}).catch();
return;
}
if (message.member.voice.channel) {
let channel = message.guild.channels.cache.get(message.member.voice.channel.id);
for (const [memberID, member] of channel.members) {
member.voice.setMute(true);
}
} else {
message.reply('You need to join a voice channel first!')
.then(message => {
message.delete({ timeout: 5000 })
}).catch();
}
}
取消静音事件:
client.on('voiceStateUpdate', (oldState, newState) => {
if (oldState.member.user.bot) return;
if (oldState.member.user !== newState.member.user) member.voice.setMute(false);
});
感谢您抽出宝贵时间帮助我! :)
【问题讨论】:
-
编辑:正如下面的一个人所说,改变已经离开的用户的状态是行不通的,所以我们可以在用户加入语音频道时这样做,如果你能帮助我的话?
标签: javascript discord discord.js bots mute