public Task Scan(DiscordRequest request, Contexts contexts) { this._antiSpamService.AddUserMessage(contexts, request); var messagesInShortTime = _antiSpamService.CountUserMessagesShorterTime(contexts.User.Id); var messagesInLongTime = _antiSpamService.CountUserMessagesLongerTime(contexts.User.Id); var userWarnsInLastFewMinutes = _antiSpamService.CountUserWarnsInShortTime(contexts.User.Id); var userWarnsInLastFewHours = _antiSpamService.CountUserWarnsInLongTime(contexts.User.Id); var userMutesInLastFewHours = _antiSpamService.CountUserMutesInLongTime(contexts.User.Id); var userMessages = _userMessagesCountService.CountMessages(contexts.User.Id, contexts.Server.Id); Log.Information($"Warns in few minutes: {userWarnsInLastFewMinutes}; in few hours: {userWarnsInLastFewHours}"); Log.Information($"Mutes in few hours: {userMutesInLastFewHours}"); var punishment = _strategy.SelectPunishment(userWarnsInLastFewMinutes, userWarnsInLastFewHours, userMutesInLastFewHours, messagesInShortTime, messagesInLongTime, userMessages); _antiSpamService.SetPunishment(contexts, punishment); Log.Information("Scanned"); return(Task.CompletedTask); }