static void Main(string[] args) { int port = int.Parse(args[0]); string eventHandleName = args[1]; string botToken = args[2]; var eventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, eventHandleName); db = new HaltMalKurzContext(); _server = new IpcServer(); _server.ReceivedRequest += ServerReceivedRequest; _server.Start(port); Bot = new TelegramBotClient(botToken); botUsername = Bot.GetMeAsync().Result.Username; eventWaitHandle.Set(); InitCommands(); stopEvent.WaitOne(); stopping = true; do { Thread.Sleep(500); } while (games.Count > 0); Environment.Exit(0); }
public CommandContext(TelegramBotClient bot, Message message, HaltMalKurzContext db) { Bot = bot; Message = message; DB = db; var split = message.Text.Split(' '); Args = new string[split.Length - 1]; for (int i = 1; i < split.Length; i++) { Args[i - 1] = split[i]; } }
public static BotUser FindOrCreateBotUser(this User user, HaltMalKurzContext db) { if (db.Users.Any(x => x.Id == user.Id)) { return(db.Users.Find(user.Id)); } else { var added = db.Users.Add(BotUser.FromUser(user)); db.SaveChanges(); return(added); } }
static void Main(string[] args) { #region Init token = args[0]; Bot = new TelegramBotClient(token); Bot.OnUpdate += Bot_OnUpdate; db = new HaltMalKurzContext(); Directory.CreateDirectory(repoContainingDir); Directory.CreateDirectory(nodesDir); #endregion StartNewNode(x => Console.WriteLine(x)); Bot.StartReceiving(); string input; do { Console.WriteLine(); input = Console.ReadLine(); Guid nodeGuid; switch (input.FirstWord()) { case "stop": if (!input.Contains(" ")) { Console.WriteLine("Usage: stop [node-guid]"); break; } if (!Guid.TryParse(input.Substring(input.IndexOf(" ")).Trim(), out nodeGuid)) { Console.WriteLine("Invalid guid."); break; } nodes.ForEach(x => { if (x.Guid.Equals(nodeGuid)) { x.Stop(); } }); Console.WriteLine("Stopping node with guid {0}.", nodeGuid.ToString()); break; case "version": if (!input.Contains(" ")) { Console.WriteLine("Usage: version [node-guid]"); break; } if (!Guid.TryParse(input.Substring(input.IndexOf(" ")).Trim(), out nodeGuid)) { Console.WriteLine("Invalid guid."); break; } nodes.ForEach(x => { if (x.Guid.Equals(nodeGuid)) { Console.WriteLine(x.Version); } }); break; case "exit": if (nodes.Any(x => !x.Stopped)) { Console.WriteLine("Stopping all nodes..."); nodes.ForEach(x => x.Stop()); while (nodes.Any(x => !x.Stopped)) { } Console.WriteLine("Nodes stopped."); } break; case "nodes": nodes.RemoveAll(x => x.Stopped && !x.Errored); nodes.ForEach(x => Console.WriteLine("Node {0} ({1}, {3}): Stopped={2}, Errored={4}", x.Process.ProcessName, x.Guid.ToString(), x.Stopped, x.Version, x.Errored)); if (nodes.Count < 1) { Console.WriteLine("No nodes present."); } break; default: Console.WriteLine("Command does not exist."); break; } } while (input.FirstWord() != "exit"); #region Tidy up Bot.StopReceiving(); db.Dispose(); ClearRecursively(Directory.CreateDirectory(nodesDir)); #endregion }
public static bool IsGlobalAdmin(this User user, HaltMalKurzContext db) => user.FindOrCreateBotUser(db).IsGlobalAdmin;