/[sudobot]/trunk/src/api/controllers/ConfigController.ts
ViewVC logotype

Diff of /trunk/src/api/controllers/ConfigController.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 393 by rakin, Mon Jul 29 17:29:59 2024 UTC revision 415 by rakin, Mon Jul 29 17:30:07 2024 UTC
# Line 19  Line 19 
19    
20  import { dot, object } from "dot-object";  import { dot, object } from "dot-object";
21  import { body } from "express-validator";  import { body } from "express-validator";
 import { z as zod } from "zod";  
22  import KeyValuePair from "../../types/KeyValuePair";  import KeyValuePair from "../../types/KeyValuePair";
23  import Controller from "../Controller";  import Controller from "../Controller";
24  import RequireAuth from "../middleware/RequireAuth";  import RequireAuth from "../middleware/RequireAuth";
# Line 41  export default class ConfigController ex Line 40  export default class ConfigController ex
40      }      }
41    
42      private zodSchema(id: string) {      private zodSchema(id: string) {
         const snowflake = zod.string().regex(/\d+/, { message: "The given value is not a Snowflake" });  
43          const config = this.client.config.props[id];          const config = this.client.config.props[id];
44            return this.client.config.schema(config);
         const schema = zod.object({  
             "prefix": zod.string().optional(),  
             "debug": zod.boolean().optional(),  
             "mute_role": snowflake.optional(),  
             "gen_role": snowflake.optional(),  
             "logging_channel": snowflake.optional(),  
             "logging_channel_join_leave": snowflake.optional(),  
             "mod_role": snowflake.optional(),  
             "announcement_channel": snowflake.optional(),  
             "admin": snowflake.optional(),  
             "lockall": zod.array(zod.string()).optional(),  
             "warn_notallowed": zod.boolean().optional(),  
             "role_commands": zod.record(  
                 snowflake,  
                 zod.array(zod.string().min(1))  
             ).optional().default({}),  
             "autoclear": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "channels": zod.array(snowflake).optional().default(config.autoclear.channels)  
             }).optional(),  
             "verification": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "role": snowflake.optional()  
             }).optional(),  
             "welcomer": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "channel": snowflake.optional(),  
                 "message": zod.string().min(1).or(zod.null()).optional(),  
                 "randomize": zod.boolean().optional()  
             }).optional(),  
             "cooldown": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "global": zod.any().optional(),  
                 "cmds": zod.object({}).optional()  
             }).optional(),  
             "starboard": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "reactions": zod.number().int().optional(),  
                 "channel": snowflake.optional()  
             }).optional(),  
             "autorole": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "roles": zod.array(snowflake).optional().default(config.autorole.roles)  
             }).optional(),  
             "spam_filter": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "limit": zod.number().int().optional(),  
                 "time": zod.number().optional(),  
                 "diff": zod.number().optional(),  
                 "exclude": zod.array(snowflake).optional().default(config.spam_filter.exclude),  
                 "samelimit": zod.number().int().optional(),  
                 "unmute_in": zod.number().optional()  
             }).optional(),  
             "raid": zod.object({  
                 "enabled": zod.boolean().optional(),  
                 "max_joins": zod.number().int().optional(),  
                 "time": zod.number().optional(),  
                 "channels": zod.array(snowflake).optional().default(config.raid.channels),  
                 "exclude": zod.boolean().optional()  
             }).optional(),  
             "global_commands": zod.array(zod.string()).optional().default(config.global_commands),  
             "filters": zod.object({  
                 "ignore_staff": zod.boolean().optional(),  
                 "chars_repeated": zod.number().int().optional(),  
                 "words_repeated": zod.number().int().optional(),  
                 "words": zod.array(zod.string()).optional().default(config.filters.words),  
                 "tokens": zod.array(zod.string()).optional().default(config.filters.tokens),  
                 "invite_message": zod.string().optional(),  
                 "words_excluded": zod.array(snowflake).optional().default(config.filters.words_excluded),  
                 "domain_excluded": zod.array(snowflake).optional().default(config.filters.domain_excluded),  
                 "invite_excluded": zod.array(snowflake).optional().default(config.filters.invite_excluded),  
                 "words_enabled": zod.boolean().optional(),  
                 "invite_enabled": zod.boolean().optional(),  
                 "domain_enabled": zod.boolean().optional(),  
                 "regex": zod.boolean().optional(),  
                 "file_mimes_excluded": zod.array(zod.string()).optional().default(config.filters.file_mimes_excluded),  
                 "file_types_excluded": zod.array(zod.string()).optional().default(config.filters.file_types_excluded),  
                 "domains": zod.array(zod.string()).optional().default(config.filters.domains),  
                 "regex_patterns": zod.array(zod.string()).optional().default(config.filters.regex_patterns),  
                 "rickrolls_enabled": zod.boolean().optional(),  
                 "pings": zod.number().int().optional()  
             }).optional()  
         });  
   
         return schema;  
45      }      }
46    
47      public async index(request: Request) {      public async index(request: Request) {

Legend:
Removed from v.393  
changed lines
  Added in v.415

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26