public async Task <IActionResult> GetAllItems([FromRoute] ulong guildId)
        {
            await RequirePermission(guildId, DiscordPermission.Admin);

            return(Ok((await AutoModerationConfigRepository.CreateDefault(_serviceProvider, (await GetIdentity()).GetCurrentUser())
                       .GetConfigsByGuild(guildId)).Select(x => new AutoModerationConfigView(x))));
        }
        public async Task <IActionResult> SetItem([FromRoute] ulong guildId, [FromBody] AutoModerationConfigForPutDto dto)
        {
            await RequirePermission(guildId, DiscordPermission.Admin);

            return(Ok(new AutoModerationConfigView(await AutoModerationConfigRepository.CreateDefault(_serviceProvider, (await GetIdentity()).GetCurrentUser())
                                                   .UpdateConfig(new AutoModerationConfig(dto, guildId)))));
        }
        public async Task <IActionResult> GetItem([FromRoute] ulong guildId, [FromRoute] AutoModerationType type)
        {
            await RequirePermission(guildId, DiscordPermission.Admin);

            return(Ok(new AutoModerationConfigView(await AutoModerationConfigRepository.CreateDefault(_serviceProvider, (await GetIdentity()).GetCurrentUser())
                                                   .GetConfigsByGuildAndType(guildId, type))));
        }
        public static async Task <AutoModerator> CreateDefault(IDiscordClient client, ulong guildId, IServiceProvider serviceProvider)
        {
            var guildConfig = await GuildConfigRepository.CreateDefault(serviceProvider).GetGuildConfig(guildId);

            var autoModerationConfigs = await AutoModerationConfigRepository.CreateWithBotIdentity(serviceProvider).GetConfigsByGuild(guildId);

            return(new AutoModerator(client, serviceProvider, guildConfig, autoModerationConfigs));
        }