public DiscordWebhookLibNotificationSender(IOptions <Config> config)
 {
     m_Executor = new DiscordWebhookExecutor(config.Value.WebhookUrl);
 }
示例#2
0
        static void Main(string[] args)
        {
            ServiceController service = new ServiceController();
            service.ServiceName = "[Service name]"; // Insert service name to be monitored
            int n = 0, b = 0;
            bool msgSent = false;

            // logging

            string token = "[Discord webhook URL]"; // Insert Discord webhook URL 
            string username = "******"; // Insert username that posts messages
            string avatar = "[Avatar image URL"; // Insert URL for avatar image

            Console.WriteLine("-------------------------------------");
            Console.WriteLine("| Medieval Engineers Server Monitor |");
            Console.WriteLine("-------------------------------------\n");

            DateTime restart1 = DateTime.Today.AddHours(3); // Set time for scheduled restart1
            DateTime restart2 = DateTime.Today.AddHours(9); // Set time for scheduled restart2
            DateTime restart3 = DateTime.Today.AddHours(15); // Set time for scheduled restart3
            DateTime restart4 = DateTime.Today.AddHours(20); // Set time for scheduled restart4

            Console.WriteLine("-----------------------------------------");
            Console.WriteLine("| Server Restart #1 at {0:HH:mm:ss zzz}. |", restart1);
            Console.WriteLine("| Server Restart #2 at {0:HH:mm:ss zzz}. |", restart2);
            Console.WriteLine("| Server Restart #3 at {0:HH:mm:ss zzz}. |", restart3);
            Console.WriteLine("| Server Restart #4 at {0:HH:mm:ss zzz}. |", restart4);
            Console.WriteLine("-----------------------------------------\n");

            DiscordWebhookExecutor discord = new DiscordWebhookExecutor(token);

            while (true)
            {
                DateTime now = DateTime.Now;
                Console.WriteLine("System Time: {0:HH:mm:ss}.", now);

                // Health check
                service.Refresh();
                Console.WriteLine("Service {0} is {1}.\n", service.ServiceName, service.Status.ToString());

                // Initial message
                if (service.Status == ServiceControllerStatus.Running && msgSent == false)
                {
                    discord.Execute(now +  " - Server is running.", username, avatar, false);
                    msgSent = true;
                }

                // Initial start when service is stopped
                if (service.Status == ServiceControllerStatus.Stopped && msgSent == false)
                {
                    discord.Execute(now + " - Server stopped.", username, avatar, false);
                    Thread.Sleep(10000);
                    now = DateTime.Now;
                    Console.WriteLine("Starting service {0}...", service.ServiceName);
                    discord.Execute(now + " - Starting server...", username, avatar, false);
                    service.Start();
                    service.WaitForStatus(ServiceControllerStatus.Running);
                    service.Refresh();
                    now = DateTime.Now;
                    Console.WriteLine("Service {0} started successfully.\n", service.ServiceName);
                    discord.Execute(now + " - Server started successfully.", username, avatar, false);
                }

                // Scheduled restarts
                // T-15 min
                if (n != 15 && now >= restart1.AddMinutes(-15) && now <= restart1.AddMinutes(-14) || n != 15 && now >= restart2.AddMinutes(-15) && now <= restart2.AddMinutes(-14) || n != 15 && now >= restart3.AddMinutes(-15) && now <= restart3.AddMinutes(-14) || n != 15 && now >= restart4.AddMinutes(-15) && now <= restart4.AddMinutes(-14))
                {
                    Console.WriteLine("!!! Server restart in 15 minutes !!!");
                    discord.Execute(now + " - Scheduled server restart in 15 minutes.", username, avatar, false);
                    n = 15;
                }

                // T-10 min
                if (n != 10 && now >= restart1.AddMinutes(-10) && now <= restart1.AddMinutes(-9) || n != 10 && now >= restart2.AddMinutes(-10) && now <= restart2.AddMinutes(-9) || n != 10 && now >= restart3.AddMinutes(-10) && now <= restart3.AddMinutes(-9) || n != 10 && now >= restart4.AddMinutes(-10) && now <= restart4.AddMinutes(-9))
                {
                    Console.WriteLine("!!! Server restart in 10 minutes !!!");
                    discord.Execute(now + " - Scheduled server restart in 10 minutes.", username, avatar, false);
                    n = 10;
                }

                // T-5min
                if (n != 5 && now >= restart1.AddMinutes(-5) && now <= restart1.AddMinutes(-4) || n != 5 && now >= restart2.AddMinutes(-5) && now <= restart2.AddMinutes(-4) || n != 5 && now >= restart3.AddMinutes(-5) && now <= restart3.AddMinutes(-4) || n != 5 && now >= restart4.AddMinutes(-5) && now <= restart4.AddMinutes(-4))
                {
                    Console.WriteLine("!!! Server restart in 5 minutes !!!");
                    discord.Execute(now + " - Scheduled server restart in 5 minutes.", username, avatar, false);
                    n = 5;
                }

                // T-0.5 min
                if (now >= restart1.AddMinutes(-0.5) && now <= restart1.AddMinutes(-0.25) || now >= restart2.AddMinutes(-0.5) && now <= restart2.AddMinutes(-0.25) || now >= restart3.AddMinutes(-0.5) && now <= restart3.AddMinutes(-0.25) || now >= restart4.AddMinutes(-0.5) && now <= restart4.AddMinutes(-0.25))
                {
                    Console.WriteLine("!!! Server restart imminent !!!");
                    discord.Execute(now + " - Scheduled server restart imminent.", username, avatar, false);

                    // Timer for precise shutdown
                    while (now > restart1.AddMinutes(-1) && now < restart1 || now > restart2.AddMinutes(-1) && now < restart2 || now > restart3.AddMinutes(-1) && now < restart3 || now > restart4.AddMinutes(-1) && now < restart4)
                    {
                        now = DateTime.Now;
                        Thread.Sleep(1000);
                    }

                    // Stop
                    Console.WriteLine("Stopping service {0}...", service.ServiceName);
                    discord.Execute(now + " - Stopping server...", username, avatar, false);
                    service.Stop();
                    service.WaitForStatus(ServiceControllerStatus.Stopped);
                    service.Refresh();
                    now = DateTime.Now;
                    Console.WriteLine("Service {0} is {1}.", service.ServiceName, service.Status.ToString());
                    discord.Execute(now + " - Server stopped successfully.", username, avatar, false);
                    Thread.Sleep(10000);

                    // Start
                    now = DateTime.Now;
                    Console.WriteLine("Starting service {0}...\n", service.ServiceName);
                    discord.Execute(now + " - Starting server...", username, avatar, false);
                    service.Start();
                    service.WaitForStatus(ServiceControllerStatus.Running);
                    service.Refresh();
                    now = DateTime.Now;
                    Console.WriteLine("Service {0} started successfully.\n", service.ServiceName);
                    discord.Execute(now + " - Server started successfully.", username, avatar, false);
                    msgSent = false; // Reset bool, for healthcheck message
                }

                // Restart after crash
                if (service.Status == ServiceControllerStatus.Stopped && msgSent == true)
                {
                    discord.Execute(now + " - <@[Role ID]> Server stopped unexpectedly!", username, avatar, false); // Mention @role
                    Thread.Sleep(10000);
                    now = DateTime.Now;
                    Console.WriteLine("Starting service {0}...", service.ServiceName);
                    discord.Execute(now + " - Starting server...", username, avatar, false);
                    service.Start();
                    service.WaitForStatus(ServiceControllerStatus.Running);
                    service.Refresh();
                    now = DateTime.Now;
                    Console.WriteLine("Service {0} started successfully.\n", service.ServiceName);
                    discord.Execute(now + " - Server started successfully.", username, avatar, false);
                    msgSent = false; // Reset bool, for healthcheck message
                }

                Thread.Sleep(10000);
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            //EXIT HANDLER//
            _consoleCtrlHandler += s =>
            {
                driver.Quit();
                return(false);
            };
            SetConsoleCtrlHandler(_consoleCtrlHandler, true);

            //CHROME SETTINGS//
            ChromeOptions options = new ChromeOptions();

            options.AddArgument("headless");                                                      //windowless
            options.AddUserProfilePreference("profile.default_content_setting_values.images", 2); //no images
            var chromeDriverService = ChromeDriverService.CreateDefaultService();

            chromeDriverService.HideCommandPromptWindow = true;

            driver = new ChromeDriver(chromeDriverService, options);
            DiscordWebhookExecutor executor = new DiscordWebhookExecutor("[Insert Webhook Link]");

            while (true)
            {
                foreach (string supremelink in SupremeLinks)
                {
                    driver.Navigate().GoToUrl("https://supremenewyork.com/shop/all/" + supremelink);
                    var Container = driver.FindElement(By.Id("container"));
                    foreach (var article in Container.FindElements(By.TagName("article")))
                    {
                        var  ItemName  = article.FindElement(By.TagName("p")).FindElement(By.ClassName("name-link")).Text;
                        var  ItemColor = article.FindElement(By.TagName("h1")).FindElement(By.ClassName("name-link")).Text;
                        bool SoldOut   = IsElementPresent(article);
                        var  ItemLink  = article.FindElement(By.TagName("a")).GetAttribute("href");

                        SiteItem temp = new SiteItem(ItemName, ItemColor, SoldOut);
                        if (ExistsInList(temp))
                        {
                            int  index      = ItemList.FindIndex(a => a.Name == ItemName && a.Color == ItemColor);
                            bool oldSoldOut = ItemList[index].SoldOut;

                            if (SoldOut != oldSoldOut)
                            {
                                ItemList.RemoveAt(index);
                                ItemList.Add(temp);
                                if (!SoldOut)
                                {
                                    ColorLine("[RESTOCK] [" + DateTime.Now + "] " + ItemName + " " + ItemColor, ConsoleColor.Green);
                                    executor.Execute("[RESTOCK] [" + DateTime.Now + "] " + ItemName + " " + ItemColor + "Link: " + ItemLink, "EZMonitor", null, false, false);
                                }
                                else
                                {
                                    ColorLine("[SOLD OUT]" + ItemName + " " + ItemColor, ConsoleColor.Red);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine("[Item] " + ItemName + " " + ItemColor + " " + SoldOut.ToString());
                            ItemList.Add(temp);
                        }
                    }
                }
            }
        }