Example #1
0
        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}`");
        }