|
4 | 4 | import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter; |
5 | 5 | import com.sedmelluq.discord.lavaplayer.track.AudioTrack; |
6 | 6 | import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason; |
| 7 | +import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; |
| 8 | +import org.slf4j.Logger; |
| 9 | +import org.slf4j.LoggerFactory; |
7 | 10 | import com.sedmelluq.discord.lavaplayer.track.playback.AudioFrame; |
8 | 11 | import lombok.Setter; |
9 | 12 | import net.dirtydeeds.discordsoundboard.service.PlaybackService; |
|
18 | 21 | @SuppressWarnings("unused") |
19 | 22 | public class AudioHandler extends AudioEventAdapter implements AudioSendHandler { |
20 | 23 |
|
| 24 | + private static final Logger LOG = LoggerFactory.getLogger(AudioHandler.class); |
| 25 | + |
21 | 26 | private final PlayerManager manager; |
22 | 27 | private final AudioPlayer audioPlayer; |
23 | 28 | private final String guildId; |
@@ -64,6 +69,19 @@ public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason |
64 | 69 | playbackService.sendTrackEnd(file.getName().substring(0, file.getName().lastIndexOf('.')), guildId); |
65 | 70 | } |
66 | 71 |
|
| 72 | + @Override |
| 73 | + public void onTrackException(AudioPlayer player, AudioTrack track, FriendlyException exception) { |
| 74 | + File file = new File(track.getIdentifier()); |
| 75 | + String trackName = file.getName(); |
| 76 | + if (trackName.contains(".")) { |
| 77 | + trackName = trackName.substring(0, trackName.lastIndexOf('.')); |
| 78 | + } |
| 79 | + LOG.warn("Track exception for {}: {}", trackName, exception.getMessage()); |
| 80 | + // Send track end event so UI updates properly |
| 81 | + playbackService.sendTrackEnd(trackName, guildId); |
| 82 | + audioPlayer.setVolume(getGlobalVolume()); |
| 83 | + } |
| 84 | + |
67 | 85 | @Override |
68 | 86 | public boolean canProvide() { |
69 | 87 | lastFrame = audioPlayer.provide(); |
|
0 commit comments