/// <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(); } }
public void TestTrackDecoding(string base64) { // verify the header of the base64 encoded track TrackDecoder.DecodeTrack(base64, verify: true); }