Example #1
0
        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);
        }
Example #2
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];
            }
        }
Example #3
0
 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);
     }
 }
Example #4
0
        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
        }
Example #5
0
 public static bool IsGlobalAdmin(this User user, HaltMalKurzContext db) => user.FindOrCreateBotUser(db).IsGlobalAdmin;