示例#1
0
    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());
        }
    }
示例#2
0
        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());
        }
示例#3
0
    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");
        }
    }