public async Task Handle(PublishFixtureEventsToSlackWorkspace message, IMessageHandlerContext messageContext) { _logger.LogInformation($"Publishing {message.FixtureEvents.Count} fixture events to {message.WorkspaceId}"); var slackTeam = await _slackTeamRepo.GetTeam(message.WorkspaceId); TauntData tauntData = null; if (slackTeam.Subscriptions.ContainsSubscriptionFor(EventSubscription.Taunts) && slackTeam.FplbotLeagueId.HasValue) { var gws = await _globalSettingsClient.GetGlobalSettings(); var currentGw = gws.Gameweeks.GetCurrentGameweek(); var slackUsers = await GetSlackUsers(slackTeam); var entries = await _leagueEntriesByGameweek.GetEntriesForGameweek(currentGw.Id, slackTeam.FplbotLeagueId.Value); var transfers = await _transfersByGameWeek.GetTransfersByGameweek(currentGw.Id, slackTeam.FplbotLeagueId.Value); tauntData = new TauntData(transfers, entries, entryName => SlackHandleHelper.GetSlackHandleOrFallback(slackUsers, entryName)); } if (!string.IsNullOrEmpty(slackTeam.FplBotSlackChannel)) { var eventMessages = GameweekEventsFormatter.FormatNewFixtureEvents(message.FixtureEvents, slackTeam.Subscriptions.ContainsStat, FormattingType.Slack, tauntData); var formattedStr = eventMessages.Select(evtMsg => $"{evtMsg.Title}\n{evtMsg.Details}"); await _publisher.PublishToWorkspace(slackTeam.TeamId, slackTeam.FplBotSlackChannel, formattedStr.ToArray()); } }
public void RegularGoalScored() { var formattedEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateGoalEvent(), CreateNoTransfersForGoalScorer()); foreach (var formatttedEvent in formattedEvents) { _helper.WriteLine(formatttedEvent); } Assert.Contains("PlayerFirstName PlayerSecondName scored a goal", formattedEvents.First()); }
public void RegularGoalScored() { var formattedEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateGoalEvent(), subscribes => true, FormattingType.Slack, CreateNoTransfersForGoalScorer()); foreach (var formatttedEvent in formattedEvents) { _helper.WriteLine($"{formatttedEvent.Title} {formatttedEvent.Details}"); } Assert.Contains("PlayerWebname scored a goal", formattedEvents.First().Details); }
public void VAR_Discord() { FormattingType formattingType = FormattingType.Discord; var formattedEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateGoalEvent(removed: true), subscribes => true, formattingType, CreateNoTransfersForGoalScorer()); foreach (var formatttedEvent in formattedEvents) { _helper.WriteLine($"{formatttedEvent.Title} {string.Join("\n", formatttedEvent.Details)}"); } Assert.Contains("~~PlayerWebname scored a goal! Рџй№ИЈ~~ (VAR? ЪциРђЇРЎђ№ИЈ)", formattedEvents.First().Details); }
public void ProducesCorrectTauntString(string slackUserRealName, string slackUserHandle, string entryName, string expectedTauntName) { // Arrange // Act var formattedEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateGoalEvent(), CreateTransferOutForGoalScorerContext(slackUserRealName, slackUserHandle, entryName)); foreach (var formatttedEvent in formattedEvents) { _helper.WriteLine(formatttedEvent); } // Assert var formattedEvent = formattedEvents.First(); var regex = new Regex("\\{0\\}.*"); CustomAssert.AnyOfContains(new GoalTaunt().JokePool.Select(x => regex.Replace(x, string.Empty)), formattedEvent); Assert.Contains(expectedTauntName, formattedEvent); }
public void ProducesCorrectTauntString(string slackUserRealName, string slackUserHandle, string entryName, string expectedTauntName) { // Arrange // Act var formattedEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateGoalEvent(), subscribes => true, FormattingType.Slack, CreateTransferOutForGoalScorerContext(slackUserRealName, slackUserHandle, entryName)); foreach (var formatttedEvent in formattedEvents) { _helper.WriteLine($"{formatttedEvent.Title} {formatttedEvent.Details}"); } // Assert var formattedEvent = formattedEvents.First(); var regex = new Regex("\\{0\\}.*"); CustomAssert.AnyOfContains(GoalDescriber.GoalJokes.Select(x => regex.Replace(x, string.Empty)), formattedEvent.Details); Assert.Contains(expectedTauntName, formattedEvent.Details); }
public async Task HandleForTeam(FixtureUpdates updates, SlackTeam slackTeam) { var slackUsers = await GetSlackUsers(slackTeam); var entries = await _leagueEntriesByGameweek.GetEntriesForGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId); var transfers = await _transfersByGameWeek.GetTransfersByGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId); var context = new GameweekLeagueContext { Players = updates.Players, Teams = updates.Teams, Users = slackUsers, GameweekEntries = entries, SlackTeam = slackTeam, TransfersForLeague = transfers }; var formattedStr = GameweekEventsFormatter.FormatNewFixtureEvents(updates.Events.ToList(), context); await _publisher.PublishToWorkspace(slackTeam.TeamId, slackTeam.FplBotSlackChannel, formattedStr.ToArray()); }
public void Formatting_ShouldNotFormat_ForIrrelevantStats() { var disordEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateIrrelevantEvents(), subscribes => true, FormattingType.Discord); foreach (var formatttedEvent in disordEvents) { _helper.WriteLine($"{formatttedEvent.Title}\n {string.Join("\n", formatttedEvent.Details)}"); } Assert.Single(disordEvents); Assert.Contains("scored a goal", disordEvents.First().Details); var slackEvents = GameweekEventsFormatter.FormatNewFixtureEvents(CreateIrrelevantEvents(), subscribes => true, FormattingType.Slack); foreach (var formatttedEvent in slackEvents) { _helper.WriteLine($"{formatttedEvent.Title}\n {string.Join("\n", formatttedEvent.Details)}"); } Assert.Single(slackEvents); Assert.Contains("scored a goal", slackEvents.First().Details); }
public async Task Handle(PublishFixtureEventsToGuild message, IMessageHandlerContext context) { _logger.LogInformation($"Publishing {message.FixtureEvents.Count} fixture events to {message.GuildId} and {message.ChannelId}"); var sub = await _repo.GetGuildSubscription(message.GuildId, message.ChannelId); if (sub != null) { TauntData tauntData = null; if (sub.LeagueId.HasValue && sub.Subscriptions.ContainsSubscriptionFor(EventSubscription.Taunts)) { var gws = await _globalSettingsClient.GetGlobalSettings(); var currentGw = gws.Gameweeks.GetCurrentGameweek(); var entries = await _leagueEntriesByGameweek.GetEntriesForGameweek(currentGw.Id, sub.LeagueId.Value); var transfers = await _transfersByGameWeek.GetTransfersByGameweek(currentGw.Id, sub.LeagueId.Value); tauntData = new TauntData(transfers, entries); } var eventMessages = GameweekEventsFormatter.FormatNewFixtureEvents(message.FixtureEvents, sub.Subscriptions.ContainsStat, FormattingType.Discord, tauntData); var i = 0; foreach (var eventMsg in eventMessages) { i += 2; var sendOptions = new SendOptions(); sendOptions.DelayDeliveryWith(TimeSpan.FromSeconds(i)); sendOptions.RouteToThisEndpoint(); await context.Send(new PublishRichToGuildChannel(message.GuildId, message.ChannelId, eventMsg.Title, eventMsg.Details), sendOptions); } } else { _logger.LogInformation($"Guild {message.GuildId} in channel {message.ChannelId} not subbing to fixture events. Not sending"); } }