Beispiel #1
0
        private void btnSendMessage_Click(object sender, EventArgs e)
        {
            client.SendMessage(client.GetJoinedChannel("pfckrutonium"), tbMsg.Text);
            if (tbMsg.Text.ToLower().StartsWith("!songrequest")) //I sent a song request through my bot
            {
                try                                              //Since it doesn't see this by default, we handle it here instead.
                {                                                //It doesn't care about duplicates in this code.
                    var ytLink = tbMsg.Text.Split(' ');
                    var p      = new songreq
                    {
                        requester = "Me",
                        ytlink    = ytLink[1]
                    };
                    qt.Enqueue(p);
                    client.SendMessage(client.GetJoinedChannel("pfckrutonium"),
                                       "Added " + GetVideoTitle(ytLink[1]) + " to Queue.");
                }
                catch
                {
                }
            }

            rtbChat.Invoke((Action) delegate { rtbChat.AppendText("[Me] " + tbMsg.Text + Environment.NewLine); });
            tbMsg.Text = "";
        }
Beispiel #2
0
 private void SetVideo(songreq request)
 {
     try
     {
         vlc.Position = 0;
         var id = YoutubeClient.ParseVideoId(request.ytlink);
         lblRequester.Text = request.requester;
         var yt    = new YoutubeClient();
         var video = yt.GetVideoMediaStreamInfosAsync(id).Result;
         var muxed = video.Muxed.WithHighestVideoQuality();
         lblTitle.Text = GetVideoTitle(request.ytlink);
         vlc.SetMedia(new Uri(muxed.Url));
         vlc.Play();
     }
     catch
     {
     }
 }
Beispiel #3
0
        private void Client_OnMessageReceived(object sender, OnMessageReceivedArgs e)
        {
            //Build Tags
            var userTags = "";

            if (e.ChatMessage.IsMe)
            {
                userTags += "[Me]";
            }
            if (e.ChatMessage.IsModerator)
            {
                userTags += "[Mod]";
            }
            if (e.ChatMessage.IsSubscriber)
            {
                userTags += "[Sub]";
            }
            if (e.ChatMessage.IsTurbo)
            {
                userTags += "[Turbo]";
            }
            if (e.ChatMessage.IsBroadcaster)
            {
                userTags += "[Literally God]";
            }
            //Add User Tags
            if (userTags == "")
            {
                userTags = e.ChatMessage.Username + ": ";
            }
            else
            {
                userTags += " " + e.ChatMessage.Username + ": ";
            }
            if (rtbChat.InvokeRequired)
            {
                rtbChat.Invoke((Action) delegate
                {
                    rtbChat.AppendText(userTags + e.ChatMessage.Message + Environment.NewLine);
                });
            }
            else
            {
                rtbChat.AppendText(userTags + e.ChatMessage.Message + Environment.NewLine);
            }

            //Act on Commands
            if (e.ChatMessage.Message.ToLower().StartsWith("!songrequest")) //user sent a song request.
            {
                try
                {
                    var ytLink = e.ChatMessage.Message.Split(' ');
                    var url    = ytLink[1];
                    var exists = qt.Any(x => x.ytlink.ToLower() == url.ToLower()); //Does any existing song request have the
                    if (exists)                                                    //Same youtube URL.
                    {
                        client.SendMessage(e.ChatMessage.Channel, "Song already exists in Queue.");
                    }
                    else
                    {
                        var p = new songreq();
                        p.requester = e.ChatMessage.Username;
                        p.ytlink    = ytLink[1];
                        qt.Enqueue(p);
                        client.SendMessage(e.ChatMessage.Channel, "Added " + GetVideoTitle(ytLink[1]) + " to Queue.");
                        //Added song to the Queue.
                    }
                }
                catch
                {
                }
            }
        }
Beispiel #4
0
        private void Client_OnMessageReceived(object sender, OnMessageReceivedArgs e)
        {
            //Act on Commands
            if (e.ChatMessage.Message.ToLower().StartsWith("!songrequest") || e.ChatMessage.Message.ToLower().StartsWith("!sr")) //user sent a song request.
            {
                try
                {
                    var ytLink = e.ChatMessage.Message.Split(' ');
                    var url    = ytLink[1];
                    if (url.ToUpper().Contains("YOUTUBE") == false && url.ToUpper().Contains("YOUTU.BE") == false)
                    {
                        //client.SendMessage(e.ChatMessage.Message,SearchForVideo(e.ChatMessage.Message));
                        client.SendMessage(e.ChatMessage.Channel, "Invalid Video");
                        return;
                    }
                    var exists = qt.Any(x => x.ytlink.ToLower() == url.ToLower()); //Does any existing song request have the
                    if (exists)                                                    //Same youtube URL.
                    {
                        client.SendMessage(e.ChatMessage.Channel, "Song already exists in Queue.");
                        return;
                    }
                    else
                    {
                        if (GetCurrency(e.ChatMessage.Username) < 100 && !e.ChatMessage.IsModerator && !e.ChatMessage.IsSubscriber)
                        {
                            client.SendMessage(e.ChatMessage.Channel, "You don't have enough " + currency.CurrencyName);
                            return;
                        }
                        else
                        {
                            GiveCurrency(e.ChatMessage.Username, -100);
                        }
                        var p = new songreq();
                        p.requester = e.ChatMessage.Username;
                        p.ytlink    = ytLink[1];
                        p.name      = GetVideoTitle(ytLink[1]);
                        qt.Enqueue(p);
                        client.SendMessage(e.ChatMessage.Channel, "Added " + p.name + " to Queue.");
                        //Added song to the Queue.
                        PlayPauseSpotify();
                        return;
                    }
                }
                catch
                {
                }
            }
            if (e.ChatMessage.Message.ToUpper() == "!LIST")
            {
                List <songreq> songlist = qt.ToList <songreq>();
                //string Queue = "Songs in Queue:" + Environment.NewLine;
                client.SendWhisper(e.ChatMessage.Username, "Queue");
                if (songlist.Count > 0)
                {
                    foreach (var song in songlist)
                    {
                        client.SendWhisper(e.ChatMessage.Username, song.name);
                        //Queue += song.name + Environment.NewLine;
                    }
                }
                else
                {
                    //Queue = "No Songs in Queue";
                }
                return;
            }

            if (e.ChatMessage.Message.ToUpper() == "!LURK")
            {
                client.SendMessage(e.ChatMessage.Channel, e.ChatMessage.Username + " is now lurking!");
                return;
            }
            if (e.ChatMessage.Message.ToUpper() == "!BACK")
            {
                client.SendMessage(e.ChatMessage.Channel, e.ChatMessage.Username + " is back from their lurk! Rejoice!");
                return;
            }
            if (e.ChatMessage.Message.ToUpper().Contains("LEWD"))
            {
                client.SendMessage(e.ChatMessage.Channel, "LEWD? WHERE?! OWO!!!");
                return;
            }
            if (e.ChatMessage.Message.ToUpper().StartsWith("!HUG"))
            {
                string[] command = e.ChatMessage.Message.Split(' ');
                if (command.Length == 2)
                {
                    client.SendMessage(e.ChatMessage.Channel, e.ChatMessage.Username + " has given " + command[1] + " a hug! CUTE!");
                }
                return;
            }
            if (e.ChatMessage.Message.ToUpper() == "!FOLLOWAGE")
            {
                client.SendMessage(e.ChatMessage.Channel, "Implement this on GitHub! https://github.com/PFCKrutonium/KruBot");
                return;
            }
            if (e.ChatMessage.Message.ToUpper() == "!UPTIME")
            {
                var userID       = api.V5.Users.GetUserByNameAsync(e.ChatMessage.Username).Result;
                var foundChannel = userID.Matches.FirstOrDefault();
                var online       = api.V5.Streams.BroadcasterOnlineAsync(foundChannel.Id).Result;
                if (online)
                {
                    var uptime = api.V5.Streams.GetUptimeAsync(foundChannel.Id).Result;
                    if (uptime.HasValue)
                    {
                        client.SendMessage(e.ChatMessage.Channel, foundChannel.Name + " has been online for " + uptime.Value.Hours + " hours and " + uptime.Value.Minutes + " minutes.");
                    }
                    else
                    {
                        //client.SendMessage(e.ChatMessage.Channel, "uptime did not return a value.");
                    }
                }
                return;
            }
            if (e.ChatMessage.Message.ToUpper() == "!COMMANDS")
            {
                client.SendWhisper(e.ChatMessage.Username, "https://pastebin.com/raw/Qn13QpyH <= Commands");
                return;
            }
            if (e.ChatMessage.Message.ToUpper() == "!SKIP")
            {
                if (e.ChatMessage.IsModerator == true || e.ChatMessage.IsBroadcaster == true)
                {
                    OutputDevice.Stop();
                    client.SendMessage(e.ChatMessage.Channel, "Song Skipped");
                }
                return;
            }
            //Money Commands
            if (e.ChatMessage.Message.ToUpper().StartsWith("!" + currency.CurrencyName.ToUpper()))
            {
                string[] command = e.ChatMessage.Message.Split(' ');
                if (command.Length == 1)
                {
                    client.SendMessage(e.ChatMessage.Channel, e.ChatMessage.Username + " has " + currency.CurrencySymbol + " " + GetCurrency(e.ChatMessage.Username));
                }
                else
                {
                    client.SendMessage(e.ChatMessage.Channel, command[1] + " has " + GetCurrency(command[1]).ToString() + " " + currency.CurrencyName);
                }
                return;
            }



            if (e.ChatMessage.Message.ToUpper().StartsWith("!GIVE"))
            {
                if (e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Moderator || e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Broadcaster)
                { //!give pfckrutonium 5 <= Gives PFCKrutonium 5 Krutons
                    string[] command = e.ChatMessage.Message.Split(' ');
                    try
                    {
                        GiveCurrency(command[1], Int32.Parse(command[2]));
                        client.SendMessage(e.ChatMessage.Channel, "Gave " + command[1] + " " + command[2] + " " + currency.CurrencyName);
                    }
                    catch
                    {
                        client.SendMessage(e.ChatMessage.Channel, "Invalid Input");
                    }
                }
                return;
            }
            if (e.ChatMessage.Message.ToUpper().StartsWith("!RESET"))
            {
                if (e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Moderator || e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Broadcaster)
                {
                    string[] command = e.ChatMessage.Message.Split(' ');
                    client.SendMessage(e.ChatMessage.Channel, "Resetting " + e.ChatMessage.Username + " from " + GetCurrency(command[1]) + " to 0");
                    GiveCurrency(command[1], GetCurrency(command[1]) * -1);
                }
                return;
            }

            // Mod only commands
            if (e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Moderator || e.ChatMessage.UserType == TwitchLib.Client.Enums.UserType.Broadcaster)
            {
                if (e.ChatMessage.Message.ToUpper().StartsWith("!NEWQUOTE"))
                {
                    string[] splitChatMessage = e.ChatMessage.Message.Split(' ');
                    if (splitChatMessage.Length >= 3)
                    {
                        Quote newQuote = new Quote();
                        // Format: "!NEWQUOTE !NEWCOMMAND Quote"
                        newQuote.command = splitChatMessage[1].ToUpper().Trim();
                        if (newQuote.command[0] != '!')
                        {
                            client.SendMessage(e.ChatMessage.Channel, "New quote was not added. Command must begin with ! symbol. Structure your command like \"!NEWQUOTE !COMMAND Quote goes here. \"");
                            return;
                        }
                        string quoteText = "";
                        for (int i = 2; i < splitChatMessage.Length; i++)
                        {
                            quoteText += splitChatMessage[i] + " ";
                        }
                        newQuote.quoteText = quoteText;
                        quotes.Add(newQuote);
                        File.WriteAllText("quotes.json", JsonConvert.SerializeObject(quotes, Formatting.Indented));
                        client.SendMessage(e.ChatMessage.Channel, "Added quote " + newQuote.command + ".");
                    }
                    else
                    {
                        client.SendMessage(e.ChatMessage.Channel, "New quote was not added. Structure your command like \"!NEWQUOTE !COMMAND Quote goes here. \"");
                    }
                    return;
                }

                if (e.ChatMessage.Message.ToUpper().StartsWith("!DELETEQUOTE"))
                {
                    string[] splitChatMessage = e.ChatMessage.Message.Split(' ');
                    // Format: "!DELETEQUOTE !COMMAND"
                    foreach (Quote quote in quotes)
                    {
                        if (quote.command.StartsWith(splitChatMessage[1].ToUpper()))
                        {
                            quotes.Remove(quote);
                            File.WriteAllText("quotes.json", JsonConvert.SerializeObject(quotes, Formatting.Indented));
                            client.SendMessage(e.ChatMessage.Channel, "Removed " + quote.command + ".");
                            return;
                        }
                    }
                }
            }

            // Note: For now, if a mod creates a command that's already a system-defined command,
            //  it will just never be called since the app will have returned before reaching this
            //  part of the code.
            if (e.ChatMessage.Message.ToUpper().StartsWith("!"))
            {
                foreach (Quote quote in quotes)
                {
                    if (quote.command.Equals(e.ChatMessage.Message.ToUpper().Trim()))
                    {
                        client.SendMessage(e.ChatMessage.Channel, "\"" + quote.quoteText.TrimEnd() + "\"");
                        return;
                    }
                }
            }
        }