public List <DJQueueItem> GetQueue(IGuild guild) { DJGuildInfo g = null; if (!guildInfo.TryGetValue(guild, out g)) { return(new List <DJQueueItem>()); } return(new List <DJQueueItem>(g.queue)); }
public string ClearQueue(IGuild guild) { DJGuildInfo g = null; if (!guildInfo.TryGetValue(guild, out g)) { return("Nothing is currently playing"); } g.queue.Clear(); return("Emptied queue."); }
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}`"); }
public async Task <string> PlayQuery(SocketUser username, IGuild guild, IVoiceChannel voiceChannel, ITextChannel textChannel, string query) { try { var search = Uri.IsWellFormedUriString(query, UriKind.Absolute) ? await lavaNode.SearchAsync(Victoria.Responses.Search.SearchType.Direct, query) : await lavaNode.SearchAsync(Victoria.Responses.Search.SearchType.YouTube, query); if (search.Status == Victoria.Responses.Search.SearchStatus.LoadFailed) { return($"Sorry, failed to load query."); } LavaTrack track = null; track = search.Tracks.FirstOrDefault(); if (track == null) { return("Sorry, can't find the track."); } var player = lavaNode.HasPlayer(guild) ? lavaNode.GetPlayer(guild) : await lavaNode.JoinAsync(voiceChannel, textChannel); if (!guildInfo.TryGetValue(guild, out var g)) { guildInfo.TryAdd(guild, new DJGuildInfo(voiceChannel)); } DJGuildInfo currentGuild = null; guildInfo.TryGetValue(guild, out currentGuild); currentGuild.Enqueue(username, track); if (player.PlayerState == Victoria.Enums.PlayerState.Playing) { return($"**Enqueued** `{track.Title}`"); } else { currentGuild.PlayNext(); await player.PlayAsync(currentGuild.currentlyPlaying.track); return($"**Playing** 🎶 `{track.Title}`"); } }catch (Exception e) { return($"Error playing query: `{e.Message}`."); } }
public string ShuffleQueue(IGuild guild) { DJGuildInfo g = null; if (!guildInfo.TryGetValue(guild, out g)) { return("Nothing is currently playing"); } if (g.queue.Count == 0) { return("Nothing is in the queue."); } g.Shuffle(); return("Shuffled queue."); }
public bool RemoveFromQueue(IGuild guild, int index) { if (index < 1) { return(false); } DJGuildInfo g = null; if (!guildInfo.TryGetValue(guild, out g)) { return(false); } g.queue.RemoveAt(index); return(true); }