问题描述
所以我目前正在做最后的更改,以便将我的机器人从discord.js 11.4更新到12。
但是,我在私人频道上遇到了另一个问题,经过一段时间后没有被删除。 我尝试将voiceChannel更改为voice.channel,但并没有成功。
这是我的代码:
bot.on("voiceStateUpdate",oldMember => {
deleteEmptyChannelAfterDelay(oldMember.voiceChannel);
});
function deleteEmptyChannelAfterDelay(voiceChannel,delayMS = 5000){
if(!voiceChannel) return;
if(voiceChannel.members.first()) return;
if(!voiceChannel.health) voiceChannel.health = 0;
voiceChannel.health += 1;
setTimeout(function(){ //queue channel for deletion and wait
if(!voiceChannel) return;
if(voiceChannel.members.first()) return;
voiceChannel.health -= 1;
if(voiceChannel.health > 0) return;
if(!voiceChannel.name.includes('\'s Room')) return;
voiceChannel.delete() //delete channel
.catch(error => console.log(error));
},delayMS);
}
我尝试在djs指南和/或论坛上寻求帮助,但找不到任何东西,因此,我将竭诚为您服务!谢谢。
解决方法
在DiscordJS V12中,voiceStateUpdate
事件已更改。现在不再传递参数oldMember
和newMember
,而是传递VoiceState的实例oldState
和newState
。要获取触发voiceStateUpdate
的频道,您不再呼叫member.voiceChannel
,而是现在呼叫VoiceState.channel
。
因此,要使代码正常工作,必须将事件回调更改为以下内容:
bot.on("voiceStateUpdate",oldState => {
deleteEmptyChannelAfterDelay(oldState.channel);
});