private async Task CheckForCsgoUpdate()
        {
            //Only check every 5 minutes (So Valve doesnt get mad at me)
            if (DateTime.Now.Minute % 5 == 0)
            {
                try
                {
                    var result = await _httpHandler.Get("https://blog.counter-strike.net/index.php/category/updates/");

                    var resultString = await result.Content.ReadAsStringAsync();

                    HtmlDocument pageDocument = new HtmlDocument();
                    pageDocument.LoadHtml(resultString);

                    var linkElement = pageDocument.DocumentNode.SelectSingleNode("//*[@id=\"post_container\"]/div[1]/h2/a");

                    var    newestCsUpdate = linkElement.InnerText;
                    string dateString     = Regex.Replace(newestCsUpdate, "[^(0-9/).]", "");
                    string lastCsUpdate   = (await _dapperDB.LoadFromDBStorage("lastCsgoUpdate")).value;

                    var link = linkElement.Attributes[0].Value;

                    if (lastCsUpdate != dateString)
                    {
                        await _dapperDB.SaveToDBStorage(new DBStorage()
                        {
                            key   = "lastCsgoUpdate",
                            value = dateString
                        });

                        var    firstUpdateLogs = pageDocument.DocumentNode.SelectSingleNode("//*[@id=\"post_container\"]/div[1]");
                        string releaseNotes    = "Release Notes:\n";
                        foreach (var element in firstUpdateLogs.ChildNodes)
                        {
                            if (element.Name == "p")
                            {
                                releaseNotes += element.InnerText + "\n";
                            }
                        }

                        releaseNotes = HttpUtility.HtmlDecode(releaseNotes);

                        var subs = await _dapperDB.GetAllCsgoUpdateSubscriber();

                        foreach (var sub in subs)
                        {
                            await _telegram.SendMessage(sub.chatId, "<b>New CS:GO release for " + dateString + "</b>\n" + link + "\n\nAll past updates: https://blog.counter-strike.net/index.php/category/updates/ \n\n" + releaseNotes);
                        }
                    }
                }
                catch (Exception e)
                {
                    _dapperDB.WriteEventLog("Init", "Error", "Could not check for CS updates - Exception: " + e.Message);
                    _telegram.SendErrorMessage("There is something wrong with the CSUpdate checker - FIX IT!");
                    _telegram.SendErrorMessage("Error was: " + e.Message);
                }
            }
        }
Example #2
0
        public async Task AddRoleToUser(ulong userId, ulong roleId)
        {
            var url = $"https://discordtlgrmmiddleware.azurewebsites.net/api/users/{userId}/roles/{roleId}";

            try
            {
                await _client.PostAsync(url, null);
            }
            catch (Exception e)
            {
                _dapperDB.WriteEventLog("Discord API Com", "Error", e.Message);
                _telegram.SendErrorMessage($"Error while communicating with DC API {e.Message}");
            }
        }