public async Task MusicPlay([Remainder] string query) { if (!await CanPerform()) { return; } var message = await ReplyAsync(_localization.GetMessage("Music search", query)); if (query.Contains("&list=")) { query = query.Substring(0, query.IndexOf("&list=", StringComparison.CurrentCulture)); } var result = await _musicService.Search(query); await message.DeleteAsync(); var user = (SocketGuildUser)Context.User; var index = 0; ITrack track = null; var isPlaying = _musicService.GetCurrentTrack() != null; switch (result.ResultStatus) { case ResultStatus.Failed: await ReplyAsync(_localization.GetMessage("Music exception")); break; case ResultStatus.NoMatch: await ReplyAsync(_localization.GetMessage("Music song invalid")); break; case ResultStatus.SearchResult: track = result.Tracks.FirstOrDefault(t => query.Contains(t.Id)) ?? result.Tracks.First(); index = _musicService.Queue(new Playable(track, user, Context.Channel as ITextChannel)); if (isPlaying) { await ReplyAsync(_localization.GetMessage("Music queued song", index, track.Title, track.Duration)); return; } break; case ResultStatus.SingleTrack: track = result.Tracks.First(); index = _musicService.Queue(new Playable(track, user, Context.Channel as ITextChannel)); if (isPlaying) { await ReplyAsync(_localization.GetMessage("Music queued song", index, track.Title, track.Duration)); return; } break; case ResultStatus.Playlist: index = _musicService.Queue(result.Tracks.Select(t => new Playable(t, user, Context.Channel as ITextChannel))); await Context.Channel.SendMessageAsync(_localization.GetMessage("Music queued playlist", result.Tracks.Count)); break; } if (isPlaying) { return; } var trackInfo = await _musicService.PlayNext(); await ReplyAsync(_localization.GetMessage("Music now playing", trackInfo.Track.Title, trackInfo.Requester.Nickname())); }
public async Task NowPlaying() { await SendEmbedAsync(_musicService.GetCurrentTrack(Context.Guild, Context.Channel as ITextChannel)); }