public async Task ChatMarkov([Remainder] string options = "[300] {5}") { await Context.Message.DeleteAsync(); int fetch = (Regex.IsMatch(options, @"\[(.+?)\]")) ? Convert.ToInt32(Regex.Matches(options, @"\[(.+?)\]")[0].Groups[1].Value) : 100; int minLength = (Regex.IsMatch(options, @"\{(.+?)\}")) ? Convert.ToInt32(Regex.Matches(options, @"\{(.+?)\}")[0].Groups[1].Value) : 5; var markovGenerator = new MarkovGenerator(Context.Channel.GetMessagesAsync(fetch).Flatten().Result.Reverse().Select(msg => msg.Content).Aggregate((i, j) => i + ". " + j)); //var markovGenerator = new MarkovGenerator(new ChannelUtils().GetMessagesHugeAsync(Context.Channel, fetch).Result.Select(msg => msg.Content).Aggregate((i, j) => i + " " + j)); await ReplyAsync(markovGenerator.GenerateSentence(minLength)); }
public void Test_GenerateSentence_CorrectStart_CorrectEnd() { MarkovGenerator gen = InitBaseMarkovGenerator(); bool thisIsAStart = false; bool isThisAStart = false; bool grammarShouldWorkStart = false; bool dotEnd = false; bool questionEnd = false; bool exclamationEnd = false; //Verify all the sentences starts and ends are used for (int i = 0; i < 30; i++) { string currSentence = gen.GenerateSentence(0); //sentence starts if (currSentence.StartsWith("This is a")) { thisIsAStart = true; } else if (currSentence.StartsWith("Is this a")) { isThisAStart = true; } else if (currSentence.StartsWith("Grammar should work")) { grammarShouldWorkStart = true; } //sentence ends if (currSentence.EndsWith(".")) { dotEnd = true; } else if (currSentence.EndsWith("?")) { questionEnd = true; } else if (currSentence.EndsWith("!")) { exclamationEnd = true; } } Assert.IsTrue(thisIsAStart); Assert.IsTrue(isThisAStart); Assert.IsTrue(grammarShouldWorkStart); Assert.IsTrue(dotEnd); Assert.IsTrue(questionEnd); Assert.IsTrue(exclamationEnd); }
public void Test_GenerateSentence_TooManyMinWords() { MarkovGenerator gen = InitBaseMarkovGenerator(); Assert.Throws<Exceptions.InvalidArguments>(delegate { gen.GenerateSentence(Defs.MAX_SENTENCE_LENGTH + 1); }); }
public void Test_GenerateSentence_NegativeNumWords() { MarkovGenerator gen = InitBaseMarkovGenerator(); Assert.Throws<Exceptions.InvalidArguments>(delegate { gen.GenerateSentence(-2); }); }