//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; } }
/// <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)); }
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!"); }
public static async Task OnTrackStarted(TrackStartEventArgs arg) { if (!_disconnectTokens.TryGetValue(arg.Player.VoiceChannel.Id, out var value)) { return; } if (value.IsCancellationRequested) { return; } value.Cancel(); }
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}"); }
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!"); }
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)); }