From 9a5507fc1b510d9925cf3876f78398750c7226e8 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 6 Nov 2017 16:22:15 +0100 Subject: [PATCH] Add auto-disconnect from vocal when bot is alone --- src/main/java/net/Broken/BotListener.java | 12 +++++++++--- src/main/java/net/Broken/Commandes/Music.java | 3 +-- src/main/java/net/Broken/audio/AudioM.java | 11 ++++++++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/Broken/BotListener.java b/src/main/java/net/Broken/BotListener.java index 20b028e..222fbea 100644 --- a/src/main/java/net/Broken/BotListener.java +++ b/src/main/java/net/Broken/BotListener.java @@ -1,6 +1,7 @@ package net.Broken; import net.Broken.Commandes.Move; +import net.Broken.Commandes.Music; import net.Broken.Commandes.Spam; import net.Broken.Outils.AntiSpam; import net.Broken.Outils.MessageTimeOut; @@ -70,15 +71,20 @@ public class BotListener extends ListenerAdapter { } + + @Override public void onGuildVoiceLeave(GuildVoiceLeaveEvent event) { super.onGuildVoiceLeave(event); - if(event.getVoiceState().inVoiceChannel()) + if(event.getGuild().getAudioManager().isConnected()) { logger.debug("User disconnected from voice channel."); - if(event.getVoiceState().getChannel().getMembers().size() == 1){ + + if(event.getGuild().getAudioManager().getConnectedChannel().getMembers().size() == 1){ logger.debug("I'm alone, close audio connection."); - event.getGuild().getAudioManager().closeAudioConnection(); + + Music music = (Music) MainBot.commandes.get("music"); + music.audio.stop(event); } } } diff --git a/src/main/java/net/Broken/Commandes/Music.java b/src/main/java/net/Broken/Commandes/Music.java index 590a8dd..e784fe6 100644 --- a/src/main/java/net/Broken/Commandes/Music.java +++ b/src/main/java/net/Broken/Commandes/Music.java @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; public class Music implements Commande { - AudioM audio; + public AudioM audio; Logger logger = LogManager.getLogger(); public Music() { audio = new AudioM(); @@ -80,7 +80,6 @@ public class Music implements Commande { break; case "stop": audio.stop(event); - event.getGuild().getAudioManager().closeAudioConnection(); break; case "info": audio.info(event); diff --git a/src/main/java/net/Broken/audio/AudioM.java b/src/main/java/net/Broken/audio/AudioM.java index bf7c667..abf56fb 100644 --- a/src/main/java/net/Broken/audio/AudioM.java +++ b/src/main/java/net/Broken/audio/AudioM.java @@ -15,6 +15,7 @@ import net.dv8tion.jda.core.entities.Guild; import net.dv8tion.jda.core.entities.Message; import net.dv8tion.jda.core.entities.TextChannel; import net.dv8tion.jda.core.entities.VoiceChannel; +import net.dv8tion.jda.core.events.guild.voice.GuildVoiceLeaveEvent; import net.dv8tion.jda.core.events.message.MessageReceivedEvent; import net.dv8tion.jda.core.managers.AudioManager; @@ -217,7 +218,7 @@ public class AudioM { GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); musicManager.scheduler.stop(); playedChanel = null; - + event.getGuild().getAudioManager().closeAudioConnection(); Message message = event.getTextChannel().sendMessage(EmbedMessageUtils.getMusicOk("Arret de la musique!")).complete(); List messages = new ArrayList(){{ add(message); @@ -226,6 +227,14 @@ public class AudioM { new MessageTimeOut(messages, MainBot.messageTimeOut).run(); } + public void stop (GuildVoiceLeaveEvent event) { + + GuildMusicManager musicManager = getGuildAudioPlayer(event.getGuild()); + musicManager.scheduler.stop(); + playedChanel = null; + event.getGuild().getAudioManager().closeAudioConnection(); + } + }