diff --git a/events/voiceStateUpdate.js b/events/voiceStateUpdate.js new file mode 100644 index 0000000..56d7fdb --- /dev/null +++ b/events/voiceStateUpdate.js @@ -0,0 +1,37 @@ +// Copyright 2020 Emily J. / mudkipscience and contributors. Subject to the AGPLv3 license. + +const music = require('../utils/music'); + +module.exports = (client, oldState, newState) => { + if(newState.channelID != oldState.channelID) { + let guild = music.getGuild(newState.guild.id); + + if(guild.playing && guild.voiceChannel.id == oldState.channelID) { + if(guild.voiceChannel.members.size == 1) { + guild.autoDisconnect = true; + + setTimeout(() => { + if(guild.voiceChannel.members.size == 1 && guild.autoDisconnect) { + setTimeout(() => { + if(guild.voiceChannel.members.size == 1 && guild.autoDisconnect) { + setTimeout(() => { + if(guild.voiceChannel.members.size == 1 && guild.autoDisconnect) { + // Probably should be async? But no need here I think + guild.dispatcher.end('silent'); + guild.message.channel.send('No one is listening to me. Leaving voice chat!'); + } else { + guild.autoDisconnect = false; + }; + }, 30000); + } else { + guild.autoDisconnect = false; + }; + }, 20000); + } else { + guild.autoDisconnect = false; + }; + }, 10000); + }; + }; + } +} \ No newline at end of file diff --git a/utils/music.js b/utils/music.js index d5747d4..bd7e1ea 100644 --- a/utils/music.js +++ b/utils/music.js @@ -66,6 +66,7 @@ exports.getVideoByQuery = async function (client, query) { exports.play = async function (client, message, query, ignoreQueue) { const guild = exports.getGuild(message.guild.id) + guild.message = message; if (!message.member.voice.channel && !guild.voiceChannel) { return message.reply('You have to be connected to a voice channel to use this command!')