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 = ""; }
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 { } }
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 { } } }
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; } } } }