Beispiel #1
0
        public async Task Radio()
        {
            IVoiceChannel channel = (Context.Message.Author as IGuildUser).VoiceChannel;

            if (channel == null)
            {
                await Context.Channel.SendMessageAsync("Please join a voice channel before requesting radio! :)");

                return;
            }
            if (ChannelTrackList.Keys.Contains(channel) == false)
            {
                AudioPlayer NewPlayer = new AudioPlayer()
                {
                    MessageClient = Context.Message.Channel
                };
                NewPlayer.SendMessage_Raised += (Message, x) => x.SendMessageAsync(Message);
                ChannelTrackList.Add(channel, NewPlayer);
            }
            AudioPlayer Player           = ChannelTrackList[channel];
            var         IsInVoiceChannel = await channel.GetUserAsync(Context.Client.CurrentUser.Id);

            if (IsInVoiceChannel == null || Player.DiscordOutStream == null)
            {
                IAudioClient audioClient = await channel.ConnectAsync();

                Player.EngageOutStream(audioClient);
            }
            await Player.PlayRadio();
        }
Beispiel #2
0
        public async Task JoinAudio(IVoiceChannel channel = null)
        {
            // Get the audio channel
            channel = channel ?? (Context.Message.Author as IGuildUser)?.VoiceChannel;

            if (channel == null)
            {
                await Context.Channel.SendMessageAsync("You must be in a voice channel.");

                return;
            }

            var userList = channel.GetUserAsync(307798617522044929);

            //if bot is not in channel, then join the channel
            if (userList.Result == null)
            {
                // For the next step with transmitting audio, you would want to pass this Audio Client in to a service.
                DiscordBot.AudioClient = await channel.ConnectAsync();
            }
            else
            {
                await Context.Channel.SendMessageAsync("Bot is already in a channel");
            }
        }
Beispiel #3
0
        public async Task Play([Remainder] string Text)
        {
            IGuildUser    SelectedUser = null;
            IVoiceChannel channel      = (Context.Message.Author as IGuildUser).VoiceChannel;

            if (Context.Message.MentionedUserIds.Count() == 1)
            {
                ulong UserID = Context.Message.MentionedUserIds.First();
                SelectedUser = await Context.Guild.GetUserAsync(UserID);

                channel = SelectedUser?.VoiceChannel;
                Text    = Text.Substring(0, Text.LastIndexOf("<"));
            }
            if (channel == null)
            {
                if (SelectedUser != null)
                {
                    await Context.Channel.SendMessageAsync(SelectedUser.Username + " isn't in a voice channel, baka!");
                }
                else
                {
                    await Context.Channel.SendMessageAsync("Please join a voice channel before requesting tracks! :)");
                }
                return;
            }
            if (ChannelTrackList.Keys.Contains(channel) == false)
            {
                AudioPlayer NewPlayer = new AudioPlayer()
                {
                    MessageClient = Context.Message.Channel
                };
                NewPlayer.SendMessage_Raised += (Message, x) => x.SendMessageAsync(Message);
                ChannelTrackList.Add(channel, NewPlayer);
            }
            AudioPlayer Player    = ChannelTrackList[channel];
            string      PlayAudio = await Player.DoPlayAsync(Text, (Context.Message.Author as IGuildUser).Nickname);

            if (PlayAudio != "")
            {
                if (PlayAudio == "ERROR")
                {
                    await Context.Channel.SendMessageAsync("Unable to process your request, " + (Context.Message.Author as IGuildUser).Nickname + ".");

                    return;
                }
                var IsInVoiceChannel = await channel.GetUserAsync(Context.Client.CurrentUser.Id);

                if (IsInVoiceChannel == null || Player.DiscordOutStream == null)
                {
                    IAudioClient audioClient = await channel.ConnectAsync();

                    Player.EngageOutStream(audioClient);
                }
                VideoInfo Vid = null;
                if (PlayAudio == "MOVE")
                {
                    Vid       = Player.GetNext();
                    PlayAudio = "Now Playing On SpagBot: " + Vid.Title;
                }
                else if (PlayAudio == "QUEUE")
                {
                    Vid       = Player.Videos.Last();
                    PlayAudio = "Queued Up On SpagBot: " + Vid.Title;
                }
                if (Vid != null)
                {
                    Console.WriteLine(Context.Message.Author.Username + " has requested " + Vid.Title);
                    await Context.Message.DeleteAsync();

                    await Context.Channel.SendMessageAsync(PlayAudio);

                    if (PlayAudio.Contains("Now Playing On SpagBot:"))
                    {
                        await Player.PlayNext(true);
                    }
                }
            }
        }