Exemple #1
0
        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()));
        }
Exemple #2
0
 public async Task NowPlaying()
 {
     await SendEmbedAsync(_musicService.GetCurrentTrack(Context.Guild, Context.Channel as ITextChannel));
 }