Esempio n. 1
0
        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); });
 }