示例#1
0
 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.");
 }
示例#2
0
        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
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        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}`.");
        }
示例#5
0
        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()));
        }
示例#6
0
        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());
        }
示例#7
0
 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();
        }
示例#9
0
 /// <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);
示例#10
0
 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.");
 }
示例#11
0
        internal Task InternalTrackStuckAsync(TrackStuckData e)
        {
            var ea = new TrackStuckEventArgs(this, e.Threshold, LavalinkUtilities.DecodeTrack(e.Track));

            return(this._trackStuck.InvokeAsync(ea));
        }
示例#12
0
 private Task OnTrackStuck(TrackStuckEventArgs arg)
 {
     _logger.ConsoleMusicLog($"Track stuck received for {arg.Track.Title}.");
     return(Task.CompletedTask);
 }
示例#13
0
 private Task OnTrackStuck(TrackStuckEventArgs arg)
 {
     return(Task.CompletedTask);
 }
示例#14
0
 private Task OnTrackStuck(TrackStuckEventArgs arg)
 {
     this._logger.LogError($"Track stuck received for {arg.Track.Title}.");
     return(Task.CompletedTask);
 }
示例#15
0
 private async Task OnTrackStuckAsync(TrackStuckEventArgs arg)
 {
     Console.WriteLine($"{arg.Track} stuck for {arg.Threshold}.");
 }
示例#16
0
 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);
示例#18
0
 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;
示例#21
0
 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}\"."));