private async Task OnTrackStuck(TrackStuckEventArgs arg) { _logger.LogError( $"Track {arg.Track.Title} got stuck for {arg.Threshold}ms. Please check Lavalink console/logs."); arg.Player.Queue.Enqueue(arg.Track); await arg.Player.TextChannel?.SendMessageAsync( $"{arg.Track.Title} has been re-added to queue after getting stuck."); }
private async Task OnTrackStuckAsync(TrackStuckEventArgs args) { var builder = new EmbedBuilder() .WithDescription($"\u26a0 {string.Format(GuildUtils.Locate("PlayerStuck", args.Player.TextChannel), args.Player.Track.Title, args.Threshold.TotalSeconds)}") .WithColor(FergunClient.Config.EmbedColor); await args.Player.TextChannel.SendMessageAsync(embed : builder.Build()); // The current track is auto-skipped }
/// <summary> /// Handles an event payload asynchronously. /// </summary> /// <param name="payload">the payload</param> /// <returns>a task that represents the asynchronous operation</returns> protected virtual async Task OnEventReceived(EventPayload payload) { 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)); } // the voice web socket was closed if (payload is WebSocketClosedEvent webSocketClosedEvent) { await player.DisconnectAsync(PlayerDisconnectCause.WebSocketClosed); Players.Remove(payload.GuildId); player.Dispose(); 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); } }
private async Task TrackStuck(LavalinkGuildConnection guildConnection, TrackStuckEventArgs e) { LavalinkTrack track = e.Track; string trackTitle = track.Title; var kv = this.Playlist.FirstOrDefault(kv => string.Equals(kv.Key.Title, trackTitle)); CommandContext ctx = kv.Value; await ctx.RespondAsync($"{ctx.Member.Mention}, it was not possible to play the song `{track.Title}` by `{track.Author}`."); }
private async Task OnTrackStuck(TrackStuckEventArgs e) { await Logs.Write("Crashes", $"Track {e.Track.Title} got stuck. Time: {e.Duration}"); await Prepare(e.Player.VoiceChannel.Guild); var track = await _music.PlayNext(); await track.TextChannel.SendMessageAsync(_localization.GetMessage("Music now playing", track.Track.Title, track.Requester.Nickname())); }
private async Task OnTrackStuck(TrackStuckEventArgs e) { if (e.Player == null || e.Track == null) { return; } e.Player.Queue.Remove(e.Track); await e.Player.TextChannel.SendMessageAsync( embed : this.GetSimpleMusicEmbed("Track got stuck. Attempting to play next track") .WithDescription(e.Track.Title).Build()); }
public async Task PlayStu(TrackStuckEventArgs ts) { Console.WriteLine("StuckEvent"); var con = Bot.guit[0].LLinkCon; var pos = Bot.guit.FindIndex(x => x.GID == ts.Player.Guild.Id); if (pos == -1) { await Task.CompletedTask; return; } if (Bot.guit[pos].playnow.LavaTrack.IsStream && !Bot.guit[pos].playnow.LavaTrack.IsStream) { var naet = await con.GetTracksAsync(new Uri(Bot.guit[pos].playnow.LavaTrack.Uri.OriginalString)); Bot.guit[pos].queue.Insert(0, new Gsets2 { LavaTrack = Bot.guit[pos].playnow.LavaTrack, requester = Bot.guit[pos].playnow.requester, addtime = Bot.guit[pos].playnow.addtime }); } await Task.CompletedTask; }
private async Task OnTruckStuck(TrackStuckEventArgs arg) { await arg.Player.TextChannel.SendMessageAsync("truck got stuck, call the step-player to unstuck it"); await arg.Player.SkipAsync(); }
/// <summary> /// Invokes the <see cref="TrackStuck"/> event asynchronously. (Can be override for event catching) /// </summary> /// <param name="eventArgs">the event arguments</param> /// <returns>a task that represents the asynchronous operation</returns> protected virtual Task OnTrackStuckAsync(TrackStuckEventArgs eventArgs) => TrackStuck.InvokeAsync(this, eventArgs);
private async Task OnTrackStuck(TrackStuckEventArgs arg) { _logger.LogError($"Track {arg.Track.Title} got stuck for {arg.Threshold}ms. Verify Lavalink Logs."); arg.Player.Queue.Enqueue(arg.Track); await arg.Player.TextChannel?.SendMessageAsync($"The song {arg.Track.Title} was re-added to the queue after freezing for a bit."); }
internal Task InternalTrackStuckAsync(TrackStuckData e) { var ea = new TrackStuckEventArgs(this, e.Threshold, LavalinkUtilities.DecodeTrack(e.Track)); return(this._trackStuck.InvokeAsync(ea)); }
private Task OnTrackStuck(TrackStuckEventArgs arg) { _logger.ConsoleMusicLog($"Track stuck received for {arg.Track.Title}."); return(Task.CompletedTask); }
private Task OnTrackStuck(TrackStuckEventArgs arg) { return(Task.CompletedTask); }
private Task OnTrackStuck(TrackStuckEventArgs arg) { this._logger.LogError($"Track stuck received for {arg.Track.Title}."); return(Task.CompletedTask); }
private async Task OnTrackStuckAsync(TrackStuckEventArgs arg) { Console.WriteLine($"{arg.Track} stuck for {arg.Threshold}."); }
private Task OnTrackStuck(TrackStuckEventArgs arg) { Console.WriteLine($"Track stuck received for {arg.Track.Title}."); return(Task.CompletedTask); }
internal Task OnTrackStuckAsync(TrackStuckEventArgs eventArgs) => TrackStuck.InvokeAsync(this, eventArgs);
private Task OnTrackStuck(TrackStuckEventArgs arg) => this.LogAsync(new LogMessage(LogSeverity.Error, "Victoria", $"Track stuck received for {arg.Track.Title}.", null));
/// <inheritdoc/> protected override Task OnTrackStuckAsync(TrackStuckEventArgs eventArgs) => Task.WhenAll(base.OnTrackStuckAsync(eventArgs), Cluster.OnTrackStuckAsync(eventArgs));
/// <summary> /// Asynchronously triggered when a track got stuck. /// </summary> /// <param name="eventArgs">the track event arguments</param> /// <returns>a task that represents the asynchronous operation</returns> public virtual Task OnTrackStuckAsync(TrackStuckEventArgs eventArgs) => Task.CompletedTask;
private async Task TrackStuckAsync(TrackStuckEventArgs arg) => await _logger.LogMessage(new LogMessage(LogSeverity.Error, "AudioManager", $"Track stuck received for \"{arg.Track.Title}\" in \"{arg.Player.VoiceChannel.Name}\" on {arg.Player.VoiceChannel.Guild.Name}\"."));