public static async Task TrackStarted(object sender, TrackStartedEventArgs e) { var player = e.Player as QueuedLavalinkPlayer; if (player.CurrentTrack.Title != null) { Console.WriteLine($"[TrackStarted] Queue has {player.Queue.Count} items"); //await ReplyAsync($"Now playing {e.Player.CurrentTrack.Title}!"); } else { Console.WriteLine("Track title was null on track start"); } await Task.CompletedTask; }
/// <summary> /// Asynchronously triggered when a track started. /// </summary> /// <param name="eventArgs">the track event arguments</param> /// <returns>a task that represents the asynchronous operation</returns> public virtual Task OnTrackStartedAsync(TrackStartedEventArgs eventArgs) => Task.CompletedTask;
/// <summary> /// Dispatches the <see cref="TrackStarted"/> event asynchronously. /// </summary> /// <param name="eventArgs">the event arguments passed with the event</param> /// <returns>a task that represents the asynchronous operation</returns> protected virtual Task OnTrackStartedAsync(TrackStartedEventArgs eventArgs) => TrackStarted.InvokeAsync(this, eventArgs);
/// <summary> /// Handles an event payload asynchronously. /// </summary> /// <param name="payload">the payload</param> /// <returns>a task that represents the asynchronous operation</returns> /// <exception cref="ObjectDisposedException">thrown if the instance is disposed</exception> protected virtual async Task OnEventReceived(EventPayload payload) { EnsureNotDisposed(); if (!Players.TryGetValue(payload.GuildId, out var player)) { return; } // a track ended if (payload is TrackEndEvent trackEndEvent) { var args = new TrackEndEventArgs(player, trackEndEvent.TrackIdentifier, trackEndEvent.Reason); await Task.WhenAll(OnTrackEndAsync(args), player.OnTrackEndAsync(args)); } // an exception occurred while playing a track if (payload is TrackExceptionEvent trackExceptionEvent) { var args = new TrackExceptionEventArgs(player, trackExceptionEvent.TrackIdentifier, trackExceptionEvent.Error); await Task.WhenAll(OnTrackExceptionAsync(args), player.OnTrackExceptionAsync(args)); } // a track got stuck if (payload is TrackStuckEvent trackStuckEvent) { var args = new TrackStuckEventArgs(player, trackStuckEvent.TrackIdentifier, trackStuckEvent.Threshold); await Task.WhenAll(OnTrackStuckAsync(args), player.OnTrackStuckAsync(args)); } // a track started if (payload is TrackStartEvent trackStartEvent) { var args = new TrackStartedEventArgs(player, trackStartEvent.TrackIdentifier); await Task.WhenAll(OnTrackStartedAsync(args), player.OnTrackStartedAsync(args)); } // the voice web socket was closed if (payload is WebSocketClosedEvent webSocketClosedEvent) { Logger?.Log(this, string.Format("Voice WebSocket was closed for player: {0}" + "\nClose Code: {1} ({2}, Reason: {3}, By Remote: {4}", payload.GuildId, webSocketClosedEvent.CloseCode, (int)webSocketClosedEvent.CloseCode, webSocketClosedEvent.Reason, webSocketClosedEvent.ByRemote ? "Yes" : "No"), webSocketClosedEvent.ByRemote ? LogLevel.Warning : LogLevel.Debug); var eventArgs = new WebSocketClosedEventArgs( closeCode: webSocketClosedEvent.CloseCode, reason: webSocketClosedEvent.Reason, byRemote: webSocketClosedEvent.ByRemote); await OnWebSocketClosedAsync(eventArgs); } }
public override async Task OnTrackStartedAsync(TrackStartedEventArgs e) { await base.OnTrackStartedAsync(e); }
internal Task OnTrackStartedAsync(TrackStartedEventArgs eventArgs) => TrackStarted.InvokeAsync(this, eventArgs);
/// <inheritdoc/> protected override Task OnTrackStartedAsync(TrackStartedEventArgs eventArgs) => Task.WhenAll(base.OnTrackStartedAsync(eventArgs), Cluster.OnTrackStartedAsync(eventArgs));