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); }
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(); } }
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; } } }
/// <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); } }
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(); }
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); } } }
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."); } } }
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(); } }
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."); }