From 41515f6a55cd35d816815797f297a1c9a935a5f4 Mon Sep 17 00:00:00 2001 From: ZtereoHYPE <57519662+ZtereoHYPE@users.noreply.github.com> Date: Tue, 21 Dec 2021 15:14:31 +0100 Subject: [PATCH] new: clean up trackManager when leaving the vc --- .../ztereomusic/audio/TrackManagers.java | 10 ++++---- .../ztereomusic/listeners/onVcDisconnect.java | 4 ---- .../listeners/vcLeaveListener.java | 24 +++++++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) delete mode 100644 src/main/java/codes/ztereohype/ztereomusic/listeners/onVcDisconnect.java create mode 100644 src/main/java/codes/ztereohype/ztereomusic/listeners/vcLeaveListener.java diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java index e699826..33f3ebc 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManagers.java @@ -5,11 +5,13 @@ import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.entities.VoiceChannel; +import net.dv8tion.jda.api.managers.AudioManager; import javax.annotation.Nullable; import java.util.Objects; public class TrackManagers { + //todo: separate infochannel setting from creation or getting, maybe remove guildtrackmanager should accept a tracc manager? @Nullable public static TrackManager getGuildTrackManager(Guild guild, MessageChannel infoChannel) { long guildId = guild.getIdLong(); @@ -20,7 +22,7 @@ public class TrackManagers { return null; } - trackManager.setInfoChannel(infoChannel); + if (infoChannel != null) trackManager.setInfoChannel(infoChannel); guild.getAudioManager().setSendingHandler(trackManager.getAudioSendHandler()); @@ -48,14 +50,14 @@ public class TrackManagers { // stops player, disconnects from vc, and deletes the wrapper public static void removeGuildTrackManager(Guild guild) { long guildId = guild.getIdLong(); + AudioManager audioManager = guild.getAudioManager(); TrackManager trackManager = ZtereoMUSIC.getInstance().getGuildTrackManagerMap().get(guildId); + audioManager.closeAudioConnection(); + if (trackManager == null) return; trackManager.stop(); - guild.getAudioManager().closeAudioConnection(); - - //todo: remove this when will be part of disconnection listener y fa fere ts tts sad ZtereoMUSIC.getInstance().getGuildTrackManagerMap().remove(guildId); } } diff --git a/src/main/java/codes/ztereohype/ztereomusic/listeners/onVcDisconnect.java b/src/main/java/codes/ztereohype/ztereomusic/listeners/onVcDisconnect.java deleted file mode 100644 index 900eb2e..0000000 --- a/src/main/java/codes/ztereohype/ztereomusic/listeners/onVcDisconnect.java +++ /dev/null @@ -1,4 +0,0 @@ -//package codes.ztereohype.ztereomusic.listeners; -// -//public class onVcDisconnect { -//} diff --git a/src/main/java/codes/ztereohype/ztereomusic/listeners/vcLeaveListener.java b/src/main/java/codes/ztereohype/ztereomusic/listeners/vcLeaveListener.java new file mode 100644 index 0000000..2da6580 --- /dev/null +++ b/src/main/java/codes/ztereohype/ztereomusic/listeners/vcLeaveListener.java @@ -0,0 +1,24 @@ +package codes.ztereohype.ztereomusic.listeners; + +import codes.ztereohype.ztereomusic.ZtereoMUSIC; +import codes.ztereohype.ztereomusic.audio.TrackManager; +import codes.ztereohype.ztereomusic.audio.TrackManagers; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.events.guild.voice.GuildVoiceLeaveEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; + +import javax.annotation.Nonnull; + +public class vcLeaveListener extends ListenerAdapter { + @Override + public void onGuildVoiceLeave(@Nonnull GuildVoiceLeaveEvent event) { + Guild guild = event.getGuild(); + Member leavingMember = event.getMember(); + Member ztereoBotMember = event.getGuild().getMember(ZtereoMUSIC.getInstance().getJda().getSelfUser()); + + if (leavingMember.equals(ztereoBotMember)) { + TrackManagers.removeGuildTrackManager(guild); + } + } +}