Beispiel #1
0
 public static bool PostingTime()
 {
     if (Convert.ToInt32(DateTime.UtcNow.Subtract(Properties.Settings.Default.LastPost).TotalMinutes) >= _interval)
     {
         _interval = GenerateInterval();
         ConsoleHelper.WriteLineIf(RunArgs.Verbose, $"Minutes to next post: {_interval}", ConsoleColor.Yellow);
         return(true);
     }
     return(false);
 }
Beispiel #2
0
 public static void DumpTime()
 {
     if (Convert.ToInt32(DateTime.UtcNow.Subtract(Properties.Settings.Default.LastDump).TotalHours) >= 24)
     {
         ConsoleHelper.WriteLineIf(RunArgs.Verbose, "Daily db dump.", ConsoleColor.DarkRed);
         DatabaseAccess.DumpDbToFile();
         Properties.Settings.Default.LastDump = DateTime.UtcNow;
         Properties.Settings.Default.Save();
     }
 }
Beispiel #3
0
        private void Input()
        {
            while (true)
            {
                char c = char.ToLower(Console.ReadKey(true).KeyChar);
                switch (c)
                {
                case 'p':
                    Program.TgBot.SendOutMessages();
                    break;

                case 'q':
                    while (DatabaseAccess.UsingDb)
                    {
                        Thread.Sleep(5);
                    }
                    Environment.Exit(0x0);
                    break;

                case 'c':
                    ConsoleHelper.WriteLineIf(RunArgs.Verbose,
                                              $"The database currently has {DatabaseAccess.CountMessages()} messages stored.",
                                              ConsoleColor.Blue);
                    break;

                case 't':
                    LastThought = Program.TgBot.Generate();
                    ConsoleHelper.WriteLineIf(RunArgs.Verbose, $"Thought: {LastThought}", ConsoleColor.Green);
                    break;

                case 'g':
                    if (LastThought == null)
                    {
                        ConsoleHelper.WriteLineIf(RunArgs.Verbose, "No preexisting thought exists.",
                                                  ConsoleColor.Cyan);
                    }
                    else
                    {
                        Program.TgBot.SendOutMessages(LastThought);
                    }
                    break;

                default:
                    if (RunArgs.Verbose)
                    {
                        Console.WriteLine("\nP -- Post generated string");
                        Console.WriteLine("Q -- Safely terminate the program");
                        Console.WriteLine("C -- Show how many lines of messages are stored in the database");
                        Console.WriteLine("T -- Generate a string from a chain state and display it");
                        Console.WriteLine("G -- Send out the last \"thought\"\n");
                    }
                    break;
                }
            }
        }
Beispiel #4
0
        /// <summary>
        /// Override sendout, used for thinking
        /// </summary>
        /// <param name="overrideMsg">Message to send</param>
        internal void SendOutMessages(string overrideMsg)
        {
            ConsoleHelper.WriteLineIf(RunArgs.Verbose, "Generating chain...");
            string chain = overrideMsg;

            ConsoleHelper.WriteLineIf(RunArgs.Verbose, $"Generated chain: {chain}", ConsoleColor.DarkGreen);
            foreach (long id in _chatIds)
            {
                PostMessage(chain, id);
            }
        }
Beispiel #5
0
 private static void Run()
 {
     TgBot = new Bot(Properties.Settings.Default.APIKey);
     ConsoleHelper.WriteLineIf(RunArgs.Verbose, "TG Api initialized.");
     if (Properties.Settings.Default.LastPost.Year < 2000)
     {
         ConsoleHelper.WriteLineIf(RunArgs.Verbose, "Last post date is default. Setting to right now.");
         Properties.Settings.Default.LastPost = DateTime.UtcNow;
         Properties.Settings.Default.Save();
     }
     ConsoleHelper.WriteIf(RunArgs.Verbose, "Beginning initialization... ");
     TgBot.Init();
     ConsoleHelper.WriteLineIf(RunArgs.Verbose, "done.");
     ConsoleHelper.WriteIf(RunArgs.Verbose, "Starting bot...");
     TgBot.Run();
 }
Beispiel #6
0
 static void Main(string[] args)
 {
     RunArgs.Handle(args);
     while (true)
     {
         try
         {
             Run();
         }
         catch (Exception e)
         {
             FormatHelpers.Error(e.Message);
             ConsoleHelper.WriteLineIf(RunArgs.Verbose,
                                       "An unhandled error has occured. Waiting 60 seconds to restart...");
             Thread.Sleep(60 * 1000);
         }
     }
 }
Beispiel #7
0
        public void Run()
        {
            ConsoleHelper.WriteLineIf(RunArgs.Verbose, "done.");
            ControlThread control = new ControlThread();

            control.Start();
            while (true)
            {
                Update();
                //Thread.Sleep(500);
                Timer.DumpTime();
                if (Timer.PostingTime())
                {
                    ConsoleHelper.WriteIf(RunArgs.Verbose, "Begin post... ");
                    SendOutMessages();
                    Properties.Settings.Default.LastPost = DateTime.UtcNow;
                    Properties.Settings.Default.Save();
                    ConsoleHelper.WriteLineIf(RunArgs.Verbose, "done.");
                }
            }
        }
Beispiel #8
0
 private void Update()
 {
     Update[] updates = GetUpdates();
     foreach (Update update in updates)
     {
         if (update.Message.Text != null)
         {
             ConsoleHelper.WriteLineIf(RunArgs.Verbose, $"[{update.Message.From.Id}]{update.Message.From.FirstName}: {update.Message.Text}");
             if (update.Message.Text.StartsWith("/subscribe"))
             {
                 SubChat(update.Message.Chat.Id);
             }
             else if (update.Message.Text.StartsWith("/unsubscribe"))
             {
                 UnsubChat(update.Message.Chat.Id);
             }
             else if (update.Message.Text.Contains("crab"))
             {
                 SendOutMessages();
             }
             else
             {
                 Feed(update.Message.Text);
                 string[] lines = update.Message.Text.Split(_newlineArray, StringSplitOptions.RemoveEmptyEntries);
                 foreach (string line in lines)
                 {
                     DatabaseAccess.AddMessage(update.Message.Chat.Id, line);
                 }
             }
         }
         Properties.Settings.Default.LastReadMessage = update.Id + 1;
         Properties.Settings.Default.Save();
     }
     if (updates.Length > 0 && Precentage.CheckChance(5))
     {
         SendOutMessages();
     }
 }
Beispiel #9
0
 public static void DumpDbToFile()
 {
     ConsoleHelper.WriteIf(RunArgs.Verbose, "Beginning timely database dump...");
     System.IO.File.WriteAllLines($"dbDump-{DateString(DateTime.Now)}-{DateTime.Now.Hour}.{DateTime.Now.Minute}.log", FormatHelpers.CollectionToString(GetAllMessages()));
     ConsoleHelper.WriteLineIf(RunArgs.Verbose, "done.");
 }