public DadJokesService() { var dbPath = Path.Combine(FileSystem.AppDataDirectory, "jokes.db"); db = new SQLiteAsyncConnection(dbPath); init = Task.WhenAll(db.CreateTableAsync <Joke>()); client = new DadJokeClient("UWC Demo"); }
private async void Client_OnMessageReceived(object sender, OnMessageReceivedArgs e) { Random rand = new Random(); bool isMod = e.ChatMessage.IsModerator || e.ChatMessage.IsBroadcaster; bool continueOrStopBecasueNotMod = !requireMod || (requireMod && isMod); string[] prettyStrings = new string[] { "I believe in you (name).", "You are valid (name), and I see you.", "Hey (name), I appreciate you.", "You are superior to negative thoughts and low actions (name)", "(name) is bold and courageous.", "You are highly valued (name)!", "If opportunity doesn't knock, build a door (name).", "Wherever you go, no matter what the weather, (name) is always bringing the sunshine!", "(name) you are in charge of your own happiness." }; if (pretty) { if (rand.Next(0, pretyIntVal) == pretyIntVal - 1) { string toSend = prettyStrings[rand.Next(0, prettyStrings.Count() - 1)].Replace("(name)", e.ChatMessage.Username); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), toSend); } } if (!continueOrStopBecasueNotMod) { return; } string message = e.ChatMessage.Message.ToLower(); foreach (command cmd in commands) { if (message.ToLower().Contains(cmd.commandString.ToLower())) { client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), cmd.response); } } foreach (sfx sfx in sfxes) { if (message.ToLower().Contains(sfx.commandString)) { sfx.play(); } } foreach (string ct in countersList) { if (message.ToLower().Contains(ct.ToLower())) { List <counter> CTs = counters.FindAll().ToList(); counter ctOBJ = CTs.Where(counter => message.Contains(counter.commandString.ToLower())).FirstOrDefault(); string count = ctOBJ.increment().ToString(); counters.Update(ctOBJ); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), ctOBJ.textPartA + " " + count + " " + ctOBJ.textPartB); } } if (e.ChatMessage.Message.ToLower().Contains("!stats")) { string count = ""; foreach (string ctCommand in countersList) { List <counter> CTs = counters.FindAll().ToList(); counter ctOBJ = CTs.Where(counter => ctCommand.Contains(counter.commandString.ToLower())).FirstOrDefault(); count = count + ctOBJ.textPartA + " " + ctOBJ.count.ToString() + " " + ctOBJ.textPartB + "\r\n\r\n"; } client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), count); } if (e.ChatMessage.Message.ToLower().Contains("!quote") && quote) { var restClient = new RestClient("https://rapidapi.p.rapidapi.com/ai-quotes/0"); var request = new RestRequest(Method.GET); request.AddHeader("x-rapidapi-key", "5881a49a26mshe388135102c2cebp1a0796jsn99699e24584c"); request.AddHeader("x-rapidapi-host", "quoteai.p.rapidapi.com"); IRestResponse response = restClient.Execute(request); List <string> quoteParts = response.Content.Replace("{", "").Split(",").ToList(); string quote = quoteParts[0].Remove(0, quoteParts[0].IndexOf(":")) + " -- " + quoteParts.Find(String => String.Contains("quote")).Remove(0, quoteParts.Find(String => String.Contains("quote")).IndexOf(":")); quote = quote.Replace(":", "").Replace("\"", ""); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), quote); } if (e.ChatMessage.Message.ToLower().Contains("!temp")) { string tempString = e.ChatMessage.Message.ToLower().Replace("!temp", "").Replace(" ", ""); if (tempString.Contains("c")) { Int32 T = 0; Int32.TryParse(tempString.Replace("c", ""), out T); T = (int)((T * 1.8) + 32); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), T + "F"); } else { Int32 T = 0; Int32.TryParse(tempString.Replace("f", ""), out T); T = (int)((T - 32) / 1.8); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), T + "C"); } } if (e.ChatMessage.Message.ToLower().Contains("!roll") && dice) { int result = rand.Next(1, 7); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), result.ToString()); } if (e.ChatMessage.Message.ToLower().Contains("!flip") && coin) { string[] msg = new string[] { "Heads", "Tails" }; int result = rand.Next(0, 2); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), msg[result]); } if (message.ToLower() == "!dad" && dadBool) { var libraryName = "ICanHazDadJoke.NET Workbook"; var contactUri = "https://github.com/mattleibow/ICanHazDadJoke.NET"; var dadClient = new DadJokeClient(libraryName, contactUri); string joke = await dadClient.GetRandomJokeStringAsync(); client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), joke); } if (message.ToLower().Contains("!sj") && !message.ToLower().Contains("!sjreset") && swearJar && message.ToLower().Length > 3) { List <swearJarAcc> accountsList = accounts.FindAll().ToList(); string userNameToFind = e.ChatMessage.Message.Remove(0, 3).Replace(" ", ""); swearJarAcc acc = accountsList.Where(swearJarAcc => swearJarAcc.useranme == userNameToFind).FirstOrDefault(); string owings = ""; if (acc == null) { acc = new swearJarAcc(); acc.useranme = userNameToFind; acc.owings = 0; owings = acc.increment(denomination).ToString(); accounts.Insert(acc); } else { owings = acc.increment(denomination).ToString(); accounts.Update(acc); } client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), userNameToFind + " ows " + owings + "$ to the swear jar!"); } if (message.ToLower().Contains("!sj") && !message.ToLower().Contains("!sjreset") && swearJar && message.ToLower().Length <= 3) { List <swearJarAcc> accList = accounts.FindAll().OrderBy(swearJarAcc => swearJarAcc.owings).ToList(); accList.Reverse(); string msg = ""; if (accList.Count > 10) { for (int i = 0; i <= 9; i++) { msg += i.ToString() + ". " + accList[i].useranme + ": " + accList[i].owings + Environment.NewLine; } } else { for (int i = 0; i <= accList.Count() - 1; i++) { msg += i.ToString() + ". " + accList[i].useranme + ": " + accList[i].owings + Environment.NewLine; } } client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), msg); } if (message.ToLower().Contains("!sjreset") && swearJar && isMod) { List <swearJarAcc> accountsList = accounts.FindAll().ToList(); string userNameToFind = e.ChatMessage.Message.Remove(0, 8).Replace(" ", "").Replace("@", ""); swearJarAcc acc = accountsList.Where(swearJarAcc => swearJarAcc.useranme.Replace("@", "") == userNameToFind).FirstOrDefault(); if (acc == null) { return; } else { acc.reset(); accounts.Update(acc); } client.SendMessage(client.JoinedChannels.Where(JoinedChannel => JoinedChannel.Channel == e.ChatMessage.Channel).FirstOrDefault(), userNameToFind + " ows nothing now!"); } }
static async Task MainAsync(string[] args) { VulgarBot FuckOff = new VulgarBot(); var libraryName = "dadJokesForOrbitalshocKsDiscord"; var contactUri = "*****@*****.**"; int SheffCount = 0; discord = new DiscordClient(new DiscordConfiguration { Token = "NDQ4MDA4NDQxNzk4MTk3MjQ5.DeP4bQ.kcBpbZbpA6FjdvFtsGIkKtdhDwY", TokenType = TokenType.Bot, UseInternalLogHandler = true, LogLevel = LogLevel.Debug }); //TW - Leave this here for an example of how solution "listens" for certain phrases that don't use the commands up above. discord.MessageCreated += async e => { if (e.Message.Content.ToLower().StartsWith("ping")) { await e.Message.RespondAsync("pong!"); } }; //END //listen for dad joke request discord.MessageCreated += async e => { bool DadJokeRequested = e.Message.Content.Contains("Dad Joke", StringComparison.OrdinalIgnoreCase); if (DadJokeRequested) { //Create a connection to joke site var client = new DadJokeClient(libraryName, contactUri); // getting a dad joke string dadJoke = await client.GetRandomJokeStringAsync(); await e.Message.RespondAsync(dadJoke); } }; //F**k off generator brahhhhhhhhhh discord.MessageCreated += async e => { if (e.Message.Author.IsBot) { //Do nothing, or it'll make an infinite loop. } else { var random = new Random(); var randomResult = random.Next(1, 1000); Console.WriteLine(randomResult); bool fireMessage = false; if (e.Author.Username.Contains("XLGrandma", StringComparison.OrdinalIgnoreCase)) { fireMessage = randomResult >= 600; } else { fireMessage = randomResult >= 900; } if (fireMessage) { var result = await VulgarBot.RandomAsync("Paddle Tennis, Inc.", "a", e.Message.Author.Mention, "slurp", "Bag of Dicks", "Edward Scissorhands", "sad", "bad", "condoms", "English"); var trimmedResult = result.Remove(result.Length - 3); await Task.Delay(3000); await e.Message.RespondAsync(trimmedResult); } } }; //troll sheff. make him have to do something 3 times haha. increase integer above //discord.MessageCreated += async e => //{ // if (e.Author.Username.Contains("Orbitalshock", StringComparison.OrdinalIgnoreCase)) // { // string lols = LOLSPEAK.GIMIE(e.Message.Content); // await Task.Delay(10000); // await e.Message.RespondAsync("**" + lols.ToUpper() + "**"); // //switch (SheffCount) // //{ // // case 0: // // { // // await e.Message.RespondAsync($"{e.Author.Mention}, There seems to be something wrong with your monitor. :MasterRace:"); // // SheffCount++; // // break; // // } // // case 1: // // { // // await e.Message.RespondAsync($"{e.Author.Mention}, What do 1080P and a garbage truck have in common? They both belong at the dump! :MasterRace:"); // // SheffCount++; // // break; // // } // // default: // // { // // break; // // } // //} // } //}; // super easy example of three VERY common things in c#. this is a very lazy request but will work for most cases. WebClient is something that does a "GET" to an API, among hundreds of other things. //Here, i've done a GET to http://api.icndb.com/jokes/random . The second thing you see is something that is used in countless millions of apps written in c#. it's called Newtonsoft.json it deserializes json. //notice the <> that has dynamic written in it. what this means...is that as long as i spelled it right and put it in the right order.....the c# will assume i know the structure of the json that's being returned. this means i don't have to create a class, or do any code // to tell the system what JSON Structure that API will return. navigate to the above link and you'll see what i mean. first there's a value, and under each value is a joke. the reason it is organized this way is you can actually ask for 5 jokes...where each value would have 1 joke attached to it. // here is an example of 5 jokes. notice the brackets after the "Value" segment. that denotes that everything after it is 'a child' of the value....similar to how a menu on a website works (i.e Eletronics will have children menu items such as cameras, tvs, home audio, appliances, sex toys, etc.). //the httputility.htmldecode gets rid of things like " instead of " that you see in programming when returning something from html. discord.MessageCreated += async e => { if (e.Message.Content.Contains("chuck", StringComparison.OrdinalIgnoreCase) || e.Message.Content.Contains("norris", StringComparison.OrdinalIgnoreCase)) { if (e.Message.Author.IsBot) { } else { WebClient chuckClient = new WebClient(); var chuckRequest = chuckClient.DownloadString("http://api.icndb.com/jokes/random"); var chuckJokeString = JsonConvert.DeserializeObject <dynamic>(chuckRequest); var chuckJoke = chuckJokeString.value.joke; //string chuckJokeFormatted = HttpUtility.HtmlDecode(chuckJoke); await e.Message.RespondAsync($"hah, {chuckJokeString.value.joke}"); } //WebClient chuckClient = new WebClient(); //var chuckJoke = chuckClient.DownloadString("http://api.icndb.com/jokes/random"); //var jokes = JsonConvert.DeserializeObject<dynamic>(chuckJoke); ////var serializer = new json //Console.WriteLine(jokes.value.joke); //var returnableJoke = jokes.value.joke; //await e.Message.RespondAsync($"{returnableJoke}"); } }; //Registers the commands created above in the Public Class MyCommands section at the very top of solution commands = discord.UseCommandsNext(new CommandsNextConfiguration { StringPrefix = ";;", }); commands.RegisterCommands <MyCommands>(); await discord.ConnectAsync(); await Task.Delay(-1); //END }
public HttpJokes() { client = new DadJokeClient("UWC Demo"); }