internal TrackEndedEventArgs(LavaPlayer player, TrackEndEvent endEvent) { Player = player; Track = TrackDecoder.Decode(endEvent.Hash); Reason = endEvent.Reason; if (endEvent.Reason == TrackEndReason.Replaced) { return; } player.UpdatePlayer(x => { x.PlayerState = PlayerState.Stopped; x.Track = default; }); }
/// <summary> /// Asynchronously triggered when a track ends. /// </summary> /// <param name="eventArgs">the track event arguments</param> /// <returns>a task that represents the asynchronous operation</returns> public override async Task OnTrackEndAsync(TrackEndEventArgs eventArgs) { if (eventArgs.Reason == TrackEndReason.LoadFailed) { botResponse = "Load failed for song. Retrying."; Queue.Insert(0, TrackDecoder.DecodeTrack(eventArgs.TrackIdentifier)); await SkipAsync(); return; } Console.WriteLine($"Track end ran. Args: {eventArgs.Reason}"); if (eventArgs.Reason != TrackEndReason.Replaced && Queue.IsEmpty) { DisconnectOnStop = false; await base.OnTrackEndAsync(eventArgs); } if (eventArgs.MayStartNext) { await SkipAsync(); } }
internal TrackStuckEventArgs(LavaPlayer player, TrackStuckEvent stuckEvent) { Player = player; Track = TrackDecoder.Decode(stuckEvent.Hash); Threshold = new TimeSpan(stuckEvent.ThresholdMs); }
public void TestTrackDecoding(string base64) { // verify the header of the base64 encoded track TrackDecoder.DecodeTrack(base64, verify: true); }
internal TrackEndedEventArgs(LavaPlayer player, TrackEndEvent endEvent) { Player = player; Track = TrackDecoder.Decode(endEvent.Hash); Reason = endEvent.Reason; }
internal TrackStartEventArgs(LavaPlayer player, TrackStartEvent trackStartEvent) { Player = player; Track = TrackDecoder.Decode(trackStartEvent.Hash); }
internal TrackExceptionEventArgs(LavaPlayer player, TrackExceptionEvent exceptionEvent) { Player = player; Track = TrackDecoder.Decode(exceptionEvent.Hash); ErrorMessage = exceptionEvent.Error; }