public override void Execute(IExecutionEnvironment environment, MessageReceivedEvent e, string commandArgs)
        {
            if (e.Instigator.VoiceChannel is null)
            {
                e.Channel.SendMessageAsync("Вам требуется зайти в какой-либо голосовой канал").RunSync();
                return;
            }
            IMusicSearchService musicSearchService = environment.GetService <IMusicSearchService>();
            IMusicPlayer        musicPlayer        = environment.GetService <IMusicPlayer>();

            string[] results = musicSearchService.GetOrCreateMusicSources(commandArgs).ToArray();
            if (results.Length == 0)
            {
                e.Channel.SendMessageAsync("Не найдено ни одного результата по данному запросу").RunSync();
                return;
            }
            string source = results[Random.Next(results.Length)];

            musicPlayer.Play(e.Instigator.VoiceChannel, e.Channel, e.GuildId, source);
            EmbedBuilder builder = new EmbedBuilder();

            builder.AddField(Path.GetFileNameWithoutExtension(source), $"Now playing (selected from {results.Length} sources)");
            builder.WithColor(Color.Green);
            e.Channel.SendMessageAsync(null, false, builder.Build()).RunSync();
        }
Ejemplo n.º 2
0
        public override void Execute(IExecutionEnvironment environment, MessageReceivedEvent e, string commandArgs)
        {
            IMusicSearchService  musicSearchService = environment.GetService <IMusicSearchService>();
            IMusicPlayer         musicPlayer        = environment.GetService <IMusicPlayer>();
            IEnumerable <string> files = musicSearchService.GetOrCreateMusicSources(commandArgs);

            if (files.Count() == 0)
            {
                e.Channel.SendMessageAsync("Не найдено ни одного результата по данному запросу").RunSync();
                return;
            }
            EmbedBuilder builder = null;

            if (files.Count() > 1)
            {
                builder = new EmbedBuilder();
                builder.WithTitle("Несколько результатов найдено");
                builder.WithDescription("Попробуйте указать более точное название");
                int counter         = 1;
                int advancedResults = 0;
                foreach (var file in files)
                {
                    if (counter < EmbedBuilder.MaxFieldCount - 1)
                    {
                        builder.AddField(counter.ToString() + ".", System.IO.Path.GetFileNameWithoutExtension(file));
                    }
                    else
                    {
                        ++advancedResults;
                    }
                    ++counter;
                }
                if (advancedResults > 0)
                {
                    builder.AddField($"Ещё результаты ({advancedResults})", "...");
                }
                builder.WithColor(Color.LightGrey);
                e.Channel.SendMessageAsync(null, false, builder.Build()).RunSync();
                return;
            }
            if (e.Instigator.VoiceChannel is null)
            {
                e.Channel.SendMessageAsync("Вам требуется зайти в какой-либо голосовой канал").RunSync();
                return;
            }
            string source = musicSearchService.GetOrCreateMusicSources(commandArgs).First();

            musicPlayer.Play(e.Instigator.VoiceChannel, e.Channel, e.GuildId, source);
            builder = new EmbedBuilder();
            builder.AddField(Path.GetFileNameWithoutExtension(source), "Now playing");
            builder.WithColor(Color.Green);
            e.Channel.SendMessageAsync(null, false, builder.Build()).RunSync();
        }