Exemple #1
0
        public void ProcessMessage(Message msg, ref Room rm)
        {
            var up = msg.Content.Remove(0, 1);
            ulong upInt = 0;

            if (!ulong.TryParse(up, out upInt) || upInt == 0)
            {
                rm.PostReplyLight(msg, string.Format(errorPhrases.PickRandom(), msg.Author.Name));
                return;
            }

            var nBytes = new byte[8];
            Extensions.RNG.GetBytes(nBytes);
            var n = (BitConverter.ToUInt64(nBytes, 0) % upInt) + 1;

            if (n % 25 == 0)
            {
                rm.PostReplyLight(msg, "http://imgs.xkcd.com/comics/random_number.png");
                return;
            }

            if (upInt == 100)
            {
                rm.PostReplyLight(msg, n == 1 ? "**CRITICAL SUCCESS**" : n == 100 ? "**CRITICAL FAILURE**" : n.ToString());
            }
            else
            {
                rm.PostReplyLight(msg, n);
            }
        }
Exemple #2
0
 public void ProcessMessage(Message msg, ref Room rm)
 {
     if (!quotaReached || (quotaReached && (DateTime.UtcNow - lastTry).TotalHours > 1))
     {
         var message = GetMessageNewMethod(msg);
         rm.PostReplyLight(msg, message);
     }
 }
Exemple #3
0
        public void ProcessMessage(Message msg, ref Room rm)
        {
            var users = rm.CurrentUsers;
            var userX = users.PickRandom().Name;
            var userY = users.PickRandom().Name;
            while (userX == userY)
            {
                userY = users.PickRandom().Name;
            }

            if (userX == rm.Me.Name)
            {
                userX = "me";
            }

            if (userY == rm.Me.Name)
            {
                userY = "me";
            }

            var message = string.Format(phrases.PickRandom(), userX, userY);

            rm.PostReplyLight(msg, message);
        }
Exemple #4
0
 public void ProcessMessage(Message msg, ref Room rm) => rm.PostReplyLight(msg, pics.PickRandom());
Exemple #5
0
        private void PrintCommandListReply(Message m, Room r)
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < router.Commands.Count; i++)
            {
                sb.AppendFormat("{0}. ({1}) {2}\n", i + 1, router.CommandStates[router.Commands[i]] ? "Enabled" : "Disabled", router.Commands[i].Usage);
            }
            r.PostReplyLight(m, sb.ToString());
        }
Exemple #6
0
        public void ProcessMessage(Message msg, ref Room rm)
        {
            string response = "";

            string[] commandParts = msg.Content.ToLowerInvariant().Replace("comic", "").Trim().Split(' ');
            if (commandParts.Length == 0)
            {
                string selectedComic = knownComics.Values.PickRandom();
                response = GetComic(selectedComic);
            }
            else if (commandParts[0].ToLowerInvariant().Trim() == "add")
            {
                if (commandParts.Length < 3)
                {
                    response = "Not enough args";
                }
                else
                {
                    knownComics.Add(commandParts[1].Trim(), commandParts[2].Trim());
                    response = "Ok.";
                }
            }
            else if (commandParts[0].ToLowerInvariant().Trim() == "remove")
            {
                if (commandParts.Length < 2)
                {
                    response = "Not enough args";
                }
                else if (!knownComics.ContainsKey(commandParts[1].Trim()))
                {
                    response = "Not found.";
                }
                else
                {
                    knownComics.Remove(commandParts[1].Trim());
                    response = "Done.";
                }
            }
            else if (commandParts[0].ToLowerInvariant().Trim() == "list")
            {
                response = string.Join(", ", knownComics.Keys);
            }
            else
            {
                if (!knownComics.ContainsKey(commandParts[0]))
                {
                    response = "Unknown comic";
                }
                else
                {
                    response = GetComic(knownComics[commandParts[0]]);
                    if (response == null)
                    {
                        response = "Comic was unsupported, and has been terminated as such.";
                        knownComics.Remove(commandParts[0]);
                    }
                }
            }

            rm.PostReplyLight(msg, response);
        }
Exemple #7
0
        public void ProcessMessage(Message msg, ref Room rm)
        {
            if ((DateTime.UtcNow - lastFetch).TotalHours > 1)
            {
                var html = new WebClient().DownloadString("http://xkcd.com/");
                var strId = latestComicIdParser.Match(html).Value;

                if (!int.TryParse(strId, out latestComicId))
                {
                    latestComicId = 1599;
                }

                lastFetch = DateTime.UtcNow;
            }

            int comicNumber = Extensions.PickRandom(Enumerable.Range(1, latestComicId));
            if (commandParser.IsMatch(msg.Content))
            {
                try
                {
                    comicNumber = int.Parse(commandParser.Match(msg.Content).Value);
                }
                catch { /* Laziest way to do this ever. Why validate parameters when you can just do it. */ }
            }
            rm.PostReplyLight(msg, string.Format("http://www.xkcd.com/{0}/", comicNumber));
        }