new: clean up trackManager when leaving the vc

This commit is contained in:
ZtereoHYPE 2021-12-21 15:14:31 +01:00
parent 9fd929c528
commit 41515f6a55
3 changed files with 30 additions and 8 deletions

View file

@ -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);
}
}

View file

@ -1,4 +0,0 @@
//package codes.ztereohype.ztereomusic.listeners;
//
//public class onVcDisconnect {
//}

View file

@ -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);
}
}
}