Example #1
0
        //private async Task StatsReceivedAsync(StatsEventArgs arg) => await _logger.LogMessage(new LogMessage(LogSeverity.Info,
        //    "AudioManager",
        //    $"Lavalink Uptime {arg.Uptime}."));

        private async Task TrackStartedAsync(TrackStartEventArgs arg)
        {
            await _logger.LogMessage(new LogMessage(LogSeverity.Info,
                                                    "AudioManager",
                                                    $"Track \"{arg.Track.Title}\" started in \"{arg.Player.VoiceChannel.Name}\" on {arg.Player.VoiceChannel.Guild.Name}\"."));

            var artwork = await arg.Track.FetchArtworkAsync();

            var embed = new EmbedBuilder()
                        .WithTitle("Now Playing")
                        .WithDescription($"[{arg.Track.Title}]({arg.Track.Url})")
                        .WithThumbnailUrl(artwork)
                        .AddField("Duration", $"`{arg.Track.Duration.StripMilliseconds()}`", true);

            if (_nowPlayingMessages.ContainsKey(arg.Player.TextChannel.Guild.Id))
            {
                var message = _nowPlayingMessages[arg.Player.TextChannel.Guild.Id];
                await message.ModifyAsync(x => x.Embed = embed.Build());
            }
            else
            {
                var message = await arg.Player.TextChannel.SendMessageAsync(embed : embed.Build());

                await message.AddReactionsAsync(_musicControlEmojis);

                _nowPlayingMessages[arg.Player.TextChannel.Guild.Id] = message;
            }
        }
Example #2
0
        /// <summary>Method called when OnTrackStarted event is fired.
        /// </summary>
        private async Task OnTrackStarted(TrackStartEventArgs arg)
        {
            var textChannel = arg.Player.TextChannel;
            var track       = arg.Track;

            /* Send "Now Playing" message to text channel, and delete it after the music ends
             * (this prevents bot spamming "Now playing" messages when queue is long) */
            _interactivityService.DelayedSendMessageAndDeleteAsync(textChannel,
                                                                   deleteDelay: track.Duration,
                                                                   embed: await CustomFormats.NowPlayingEmbed(track));
        }
Example #3
0
        private async Task OnTrackStarted(TrackStartEventArgs args)
        {
            if (!_disconnectTokens.TryGetValue(args.Player.VoiceChannel.Id, out var value))
            {
            }

            if (value.IsCancellationRequested)
            {
                return;
            }

            value.Cancel();
            await args.Player.TextChannel.SendMessageAsync("Auto disconnect has been cancelled!");
        }
Example #4
0
        public static async Task OnTrackStarted(TrackStartEventArgs arg)
        {
            if (!_disconnectTokens.TryGetValue(arg.Player.VoiceChannel.Id, out var value))
            {
                return;
            }

            if (value.IsCancellationRequested)
            {
                return;
            }

            value.Cancel();
        }
Example #5
0
        private async Task OntrackStarted(TrackStartEventArgs args)
        {
            //If player hasn't got cancellation token return
            if (!_disconnectTokens.TryGetValue(args.Player.VoiceChannel.Id, out var value))
            {
                return;
            }

            //If Cancellation token isn't active return
            if (value.IsCancellationRequested)
            {
                return;
            }

            //deactive the token
            value.Cancel(true);
            _logger.LogInformation(
                $"The auto-disconnected cancelled from {args.Player.VoiceChannel.Name} in {args.Player.VoiceChannel.Guild.Name}");
        }
Example #6
0
        private async Task OnTrackStarted(TrackStartEventArgs arg)
        {
            EmbedBuilder embed = new EmbedBuilder();

            embed.WithTitle($"Now Playing: {arg.Track.Title}");
            embed.WithThumbnailUrl(arg.Track.FetchArtworkAsync().Result);
            embed.WithColor(3447003);
            embed.WithDescription(arg.Track.Duration.ToString());
            await arg.Player.TextChannel.SendMessageAsync("", false, embed.Build());

            if (!_disconnectTokens.TryGetValue(arg.Player.VoiceChannel.Id, out var value))
            {
                return;
            }

            if (value.IsCancellationRequested)
            {
                return;
            }

            value.Cancel(true);
            await arg.Player.TextChannel.SendMessageAsync("Auto disconnect has been cancelled!");
        }
Example #7
0
        private async Task PlaybackStarted(LavalinkGuildConnection guildConnection, TrackStartEventArgs e)
        {
            LavalinkTrack track         = e.Track;
            var           kv            = this.Playlist.FirstOrDefault(kv => string.Equals(kv.Key.Title, track.Title));
            DiscordMember memberCommand = kv.Value.Member;

            await kv.Value.RespondAsync(embed : new DiscordEmbedBuilder
            {
                Author = new DiscordEmbedBuilder.EmbedAuthor {
                    Name = "Playing now:"
                },
                Description = $"Song: {Formatter.MaskedUrl(track.Title, track.Uri)}\n" +
                              $"Author: {track.Author}\n" +
                              $"Length: {track.Length.Humanize()}\n" +
                              $"Requested by: {memberCommand.DisplayName}#{memberCommand.Discriminator}",
                Color     = DiscordEmbedColor.RandomColorEmbed(),
                Thumbnail = new DiscordEmbedBuilder.EmbedThumbnail {
                    Url = track.GetThumbnailLink(Thumbnail.HqDefault).AbsoluteUri
                }
            });

            if (!this._isPlaying)
            {
                this._isPlaying = true;
            }

            if (this._isPaused)
            {
                this._isPaused = false;
            }

            if (this._isStopped)
            {
                this._isStopped = false;
            }
        }
        internal Task InternalPlaybackStartedAsync(string track)
        {
            var ea = new TrackStartEventArgs(this, LavalinkUtilities.DecodeTrack(track));

            return(this._playbackStarted.InvokeAsync(ea));
        }