private async Task OnTrackEndedAsync(TrackEndedEventArgs args) { if (args.Reason != Victoria.Enums.TrackEndReason.Finished) { return; } // No users are in the channel, stop playing and leave. if ((args.Player.VoiceChannel as SocketVoiceChannel).Users.Count == 0) { await LeaveChannel(args.Player.VoiceChannel.Guild, args.Player.VoiceChannel); return; } // Check if we should loop the track that ended. DJGuildInfo guild = null; if (guildInfo.TryGetValue(args.Player.VoiceChannel.Guild, out guild)) { if (guild.loopSong == true) { await args.Player.PlayAsync(args.Track); await args.Player.TextChannel.SendMessageAsync($"**Looping** 🎶 `{args.Track.Title}`"); return; } } // Couldn't find the guild, leave channel. if (guild == null) { await LeaveChannel(args.Player.VoiceChannel.Guild, args.Player.VoiceChannel); return; } guild.OnNextTrack(); // There was no next track, leave channel. if (guild.currentlyPlaying == null) { await LeaveChannel(args.Player.VoiceChannel.Guild, args.Player.VoiceChannel); return; } LavaTrack track = guild.currentlyPlaying.track as LavaTrack; await args.Player.PlayAsync(track); await args.Player.TextChannel.SendMessageAsync($"**Playing** 🎶`{track.Title}`"); }