private void OnIssueComment(IssueCommentEvent.RootObject obj) { //https://developer.github.com/v3/activity/events/types/#issuecommentevent if (obj == null) { return; } SendEventMessage(DiscordMessageFormatter.GetOnIssueCommentMessage(obj)); }
private void OnPush(PushEvent.RootObject obj) { //https://developer.github.com/v3/activity/events/types/#pushevent if (obj == null) { return; } SendEventMessage(DiscordMessageFormatter.GetOnPushMessage(obj)); }
private async void OnProjectCard(ProjectCardEvent.RootObject obj) { //https://developer.github.com/v3/activity/events/types/#projectcardevent if (obj == null) { return; } ProjectColumn column = await _githubClient.Repository.Project.Column.Get(obj.project_card.column_id); Issue issue = null; string contentUrl = obj.project_card.content_url; if (!string.IsNullOrEmpty(contentUrl)) { int pos = contentUrl.LastIndexOf("/") + 1; string strId = contentUrl.Substring(pos, contentUrl.Length - pos); if (int.TryParse(strId, out int id)) { issue = await _githubClient.Issue.Get(obj.repository.id, id); } } switch (obj.action) { case "created": SendEventMessage(DiscordMessageFormatter.GetOnProjectCardCreatedMessage(obj, column, issue)); break; case "edited": SendEventMessage(DiscordMessageFormatter.GetOnProjectCardEditedMessage(obj)); break; case "converted": SendEventMessage(DiscordMessageFormatter.GetOnProjectCardConvertedMessage(obj)); break; case "moved": SendEventMessage(DiscordMessageFormatter.GetOnProjectCardMovedMessage(obj, column, issue)); break; case "deleted": SendEventMessage(DiscordMessageFormatter.GetOnProjectCardDeletedMessage(obj, issue)); break; } }
private void ServerStatusTimer(Object o) { IRestResponse response = null; var watch = Stopwatch.StartNew(); string exceptionMessage = string.Empty; try { _log.Info($"Pinging {_settings.ServerEndpointStatus} for connection status..."); var client = new RestClient(new Uri(_settings.ServerEndpointStatus)); var request = new RestRequest(Method.GET); response = client.Execute(request); } catch (Exception ex) { exceptionMessage = ex.Message; _log.Error($"Failed connecting to url. Error: {ex.Message}"); } watch.Stop(); _log.Info($"Ping took {watch.ElapsedMilliseconds} ms to complete."); if (response != null) { _statusResponseErrors = 0; if (response.StatusCode != HttpStatusCode.OK) { _log.Info($"Server ping did not return OK, but instead {response.StatusDescription}"); _statusChannel.SendMessageAsync("", false, DiscordMessageFormatter.GetRestResponseMessage(response, _settings.ServerEndpointStatus, watch.ElapsedMilliseconds).Build()); } else { _log.Info($"Server ping was successful!"); } } else { _statusResponseErrors++; _log.Error($"Server response was null. If this happens {3 - _statusResponseErrors} more time(s) I will notify the Discord channel."); if (_statusResponseErrors >= 2) { _log.Error($"Server didn't respond 3 times in a row. I will now notify the Discord channel."); _statusChannel.SendMessageAsync("", false, DiscordMessageFormatter.GetRestResponseFailedMessage(exceptionMessage, _settings.ServerEndpointStatus).Build()); _statusResponseErrors = 0; } } }
private void OnIssues(IssuesEvent.RootObject obj) { //https://developer.github.com/v3/activity/events/types/#issuesevent if (obj == null) { return; } switch (obj.action) { case "opened": SendEventMessage(DiscordMessageFormatter.GetOnIssuesOpenedMessage(obj)); break; case "closed": SendEventMessage(DiscordMessageFormatter.GetOnIssuesClosedMessage(obj)); break; case "reopened": SendEventMessage(DiscordMessageFormatter.GetOnIssuesReopenedMessage(obj)); break; case "assigned": SendEventMessage(DiscordMessageFormatter.GetOnIssuesAssignedMessage(obj)); break; case "unassigned": SendEventMessage(DiscordMessageFormatter.GetOnIssuesUnassignedMessage(obj)); break; case "labeled": SendEventMessage(DiscordMessageFormatter.GetOnIssuesLabeledMessage(obj)); break; case "unlabeled": SendEventMessage(DiscordMessageFormatter.GetOnIssuesUnlabeledMessage(obj)); break; } }
public async Task StatusAsync([Summary("Name of service")] string service, [Summary("How many hours to go back for comparison stats")] int hours = 0) { _log.Info($"{Context.User.Username} executed !stats command with parameter {service}"); var builder = new EmbedBuilder() { Color = Const.DISCORD_EMBED_COLOR, }; switch (service) { case "hookapp": ServerStats stats = _stats.Where(o => string.IsNullOrEmpty(o.error)).LastOrDefault(); ServerStats compared = null; if (stats == null) { _log.Info($"Ho history of stats available. Forcefully getting one from server."); stats = ApiEndpoint.GetServerStats(); } var historyList = _stats.Where(o => string.IsNullOrEmpty(o.error)).Take(_stats.Count() - 1).ToList(); if (hours.Equals(0)) { compared = historyList.LastOrDefault(); } else { _log.Info($"Getting history stats from {hours} hours ago"); var queryDay = DateTime.Now.Subtract(TimeSpan.FromHours(hours)); compared = historyList.OrderBy(o => Math.Abs((o.date.Subtract(queryDay).Ticks))).FirstOrDefault(); } _log.Info($"Replying with server status for service {service}"); await Context.Channel.SendMessageAsync("", false, DiscordMessageFormatter.GetServiceHookappMessage(stats, compared).Build()); break; } }
private void OnLabel(LabelEvent.RootObject obj) { //https://developer.github.com/v3/activity/events/types/#labelevent if (obj == null) { return; } switch (obj.action) { case "created": SendEventMessage(DiscordMessageFormatter.GetOnLabelCreatedMessage(obj)); break; case "edited": SendEventMessage(DiscordMessageFormatter.GetOnLabelEditedMessage(obj)); break; case "deleted": SendEventMessage(DiscordMessageFormatter.GetOnLabelDeletedMessage(obj)); break; } }
public EmbedBuilder GetTranslatedMessage(SocketMessage arg, string message) { _log.Info($"Getting translation from Azure service for message: {arg.Content}"); string author = arg.Author.Username; string channel = arg.Channel.Name; string originalText = arg.Content; string translated = TranslateText(message); if (translated.Length > 0) { _log.Info($"Translation successful. Returning formatted response."); return(DiscordMessageFormatter.GetTranslationMessage (new DataHolders.Translation() { Author = author, Channel = channel, OriginalText = originalText, TranslatedText = translated })); } return(null); }