Esempio n. 1
0
        public async Task <string> PlayAsync(int query, IVoiceChannel voiceChannel, ITextChannel textChannel, ulong guildId)
        {
            await lavaSocketClient.ConnectAsync(voiceChannel, textChannel);

            if (player == null)
            {
                player = lavaSocketClient.GetPlayer(guildId);
            }

            if (query >= 0 && query < 9)
            {
                var track = searchedTracks[query];
                if (player.IsPlaying)
                {
                    player.Queue.Enqueue(track);
                    isSearching = false;
                    return($"{track.Title} has been queued.");
                }
                else
                {
                    await player.PlayAsync(track);

                    isSearching = false;
                    return($"Now Playing: {track.Title}");
                }
            }
            else
            {
                return("Please choose a number between 0 and 8");
            }
        }
Esempio n. 2
0
        public async Task <string> PlayAsync(string query, ulong guildId)
        {
            Player = lavaSocketClient.GetPlayer(guildId);
            SearchResult results = await lavaRestClient.SearchYouTubeAsync(query);

            if (results.LoadType == LoadType.NoMatches || results.LoadType == LoadType.LoadFailed)
            {
                return("No matches found.");
            }
            LavaTrack track = results.Tracks.FirstOrDefault();

            if (track is null)
            {
                return("The possibility of you seeing this is less than 0% but Jetbrains won't shut up about it.");
            }

            if (Player.IsPlaying)
            {
                Player.Queue.Enqueue(track);
                return($"{track.Title} has been added to the queue.");
            }

            await Player.PlayAsync(track);

            return($"Now player: {track.Title}");
        }
Esempio n. 3
0
 public void BeforeExecute(ulong guildId)
 {
     _player = _lavaClient.GetPlayer(guildId);
     if (_queues.TryGetValue(guildId, out _queue))
     {
         return;
     }
     _queue = new Queue <IPlayable>();
     _queues.Add(guildId, _queue);
 }
Esempio n. 4
0
 public async Task UserVoiceStateUpdated(SocketUser user, SocketVoiceState lastVoice, SocketVoiceState newVoice)
 {
     if (lastVoice.VoiceChannel != null && lastVoice.VoiceChannel.GetUser(_client.CurrentUser.Id) != null)
     {
         var player = _lavaSocketClient.GetPlayer(lastVoice.VoiceChannel.Guild.Id);
         if (player != null && !lastVoice.VoiceChannel.Users.Where(w => !w.IsBot).Any() && !player.IsPaused)
         {
             await player.PauseAsync();
         }
     }
     else if (newVoice.VoiceChannel != null && newVoice.VoiceChannel.GetUser(_client.CurrentUser.Id) != null)
     {
         var player = _lavaSocketClient.GetPlayer(newVoice.VoiceChannel.Guild.Id);
         if (player != null && newVoice.VoiceChannel.Users.Where(w => !w.IsBot).Any() && player.IsPaused)
         {
             await player.ResumeAsync();
         }
     }
 }
Esempio n. 5
0
        public async Task <string> PlayAsync(string query, ulong guildId)
        {
            _player = _lavaSocketClient.GetPlayer(guildId);
            var results = await _lavaRestClient.SearchYouTubeAsync(query);

            if (results.LoadType == LoadType.NoMatches || results.LoadType == LoadType.LoadFailed)
            {
                return("No matches found.");
            }

            var track = results.Tracks.FirstOrDefault();

            if (_player.IsPlaying)
            {
                _player.Queue.Enqueue(track);
                return($"{track.Title} has been added to the queue.");
            }
            else
            {
                await _player.PlayAsync(track);

                return($"Now Playing: {track.Title}");
            }
        }
Esempio n. 6
0
        public async Task <Embed> PlayAsync(string query, ulong guildId)
        {
            _player = _lavaSocketClient.GetPlayer(guildId);
            var results = await _lavaRestClient.SearchYouTubeAsync(query);

            if (results.LoadType == LoadType.NoMatches || results.LoadType == LoadType.LoadFailed)
            {
                return(await EmbedHandler.CreateBasicEmbed("No Results", "Your search returned no results.", Color.Blue));
            }

            var track = results.Tracks.FirstOrDefault();

            if (_player.IsPlaying)
            {
                _player.Queue.Enqueue(track);
                return(await EmbedHandler.CreateMusicQueueEmbed(":arrow_right: " + track.Title + " added to queue", track.Uri.ToString()));
            }
            else
            {
                await _player.PlayAsync(track);

                return(await EmbedHandler.CreateMusicEmbed(":musical_note: Now playing " + track.Title + " :musical_note:", track.Uri.ToString()));
            }
        }
Esempio n. 7
0
        public async Task <string> PlayAsync(string query, ulong guildId)
        {
            _player = _lavaSocketClient.GetPlayer(guildId);
            var results = await _lavaRestClient.SearchYouTubeAsync(query);

            if (results.LoadType == LoadType.NoMatches || results.LoadType == LoadType.LoadFailed)
            {
                return("⚠️ No se han encontrado resultados.");
            }

            var track = results.Tracks.FirstOrDefault();

            if (_player.IsPlaying)
            {
                _player.Queue.Enqueue(track);
                return($"🔔 {track.Title} se agregó a la cola.");
            }
            else
            {
                await _player.PlayAsync(track);

                return($"🔔 Ahora está sonando: {track.Title}");
            }
        }
Esempio n. 8
0
        private async Task OnReactionAdd(Cacheable <IUserMessage, ulong> cache, ISocketMessageChannel channel, SocketReaction sReaction)
        {
            IUserMessage message = await cache.GetOrDownloadAsync();

            ITextChannel    textChannel = (ITextChannel)channel;
            SocketGuildUser user        = (SocketGuildUser)message.Author;

            var player = _lavaSocketClient.GetPlayer(textChannel.Guild.Id);

            if (player == null)
            {
                return;
            }

            foreach (Embed embed in message.Embeds)
            {
                string[] key = embed.Title.Split(" ");

                if (sReaction.UserId != _client.CurrentUser.Id)
                {
                    if (key[0] == "queue:")
                    {
                        await message.RemoveAllReactionsAsync(new RequestOptions());

                        int p = int.Parse(key[3]);

                        int forward     = p + 10;
                        int fTrackPos   = forward - 9;
                        int fTrackStart = forward - 9;

                        int prev        = p - 10;
                        int pTrackPos   = prev - 9;
                        int pTrackStart = prev - 9;

                        if (sReaction.Emote.Name == "➡")
                        {
                            getQueueResults(player, textChannel, fTrackPos, fTrackStart, forward, message, false);
                        }

                        if (sReaction.Emote.Name == "⬅")
                        {
                            getQueueResults(player, textChannel, pTrackPos, pTrackStart, prev, message, false);
                        }
                        return;
                    }

                    if (key[0] == "Skipping!")
                    {
                        if (sReaction.Emote.Name == "☑")
                        {
                            Console.WriteLine(message.Reactions.Count);
                            Console.WriteLine(user.VoiceChannel.Users.Count - 1);
                            float count = (user.VoiceChannel.Users.Count - 1) / 2;
                            if (message.Reactions.Count > count)
                            {
                                await channel.SendMessageAsync(null, false, await SkipAsync(textChannel.Guild.Id));

                                await message.RemoveAllReactionsAsync(new RequestOptions());
                            }
                        }
                        return;
                    }
                }
            }
        }
Esempio n. 9
0
 protected override void BeforeExecute(CommandInfo command)
 {
     player = _lavaSocketClient.GetPlayer(Context.Guild.Id);
     base.BeforeExecute(command);
 }