From 4f2cd6df7aa254162b9bcf015a55b505490973ba Mon Sep 17 00:00:00 2001 From: ZtereoHYPE <57519662+ZtereoHYPE@users.noreply.github.com> Date: Thu, 3 Feb 2022 03:09:07 +0100 Subject: [PATCH] new: better error handling attempt --- .../ztereomusic/audio/TrackManager.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java index 6efe9a7..d401dbd 100644 --- a/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java +++ b/src/main/java/codes/ztereohype/ztereomusic/audio/TrackManager.java @@ -1,5 +1,7 @@ package codes.ztereohype.ztereomusic.audio; +import codes.ztereohype.ztereomusic.ZtereoMUSIC; +import codes.ztereohype.ztereomusic.networking.YoutubeSearch; import com.sedmelluq.discord.lavaplayer.player.AudioPlayer; import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter; @@ -10,6 +12,7 @@ import lombok.Getter; import lombok.Setter; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.MessageChannel; +import net.shadew.util.data.Pair; import java.util.ArrayList; import java.util.List; @@ -90,13 +93,27 @@ public class TrackManager extends AudioEventAdapter { @Override public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { - if (endReason.mayStartNext) { - playNext(); - } + switch (endReason) { + case FINISHED -> { + playNext(); + } + //todo: warning: this will create an infinite loop if a specific video has issues... + case LOAD_FAILED -> { + infoChannel.sendMessage("Loading failed, retrying...").queue(); + String identifier; + String trackTitle = track.getInfo().title; -// if (endReason.equals(AudioTrackEndReason.CLEANUP)) { -// TrackManagers.removeGuildTrackManager(guild); -// } + Pair query = YoutubeSearch.query(trackTitle); + if (query.first()) { + identifier = query.second(); + } else { + infoChannel.sendMessage(query.second()).queue(); + return; + } + + ZtereoMUSIC.getInstance().getPlayerManager().loadItem(identifier, new CustomAudioLoadResultHandler(this, infoChannel)); + } + } // endReason == FINISHED: A track finished or died by an exception (mayStartNext = true). // endReason == LOAD_FAILED: Loading of a track failed (mayStartNext = true).