From 0e87bbd3940d89defcb04926587b35c8f4d1947f Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Thu, 16 Jun 2022 14:32:18 -0400 Subject: remove util classes, move config out of src --- config/Config.ts | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 config/Config.ts (limited to 'config/Config.ts') diff --git a/config/Config.ts b/config/Config.ts new file mode 100644 index 0000000..ce5ec06 --- /dev/null +++ b/config/Config.ts @@ -0,0 +1,93 @@ +import { type Snowflake } from 'discord.js'; + +export class Config { + public credentials: Credentials; + public environment: Environment; + public owners: Snowflake[]; + public prefix: string; + public channels: Channels; + public db: DataBase; + public logging: Logging; + public supportGuild: SupportGuild; + + public constructor(options: ConfigOptions) { + this.credentials = options.credentials; + this.environment = options.environment; + this.owners = options.owners; + this.prefix = options.prefix; + this.channels = options.channels; + this.db = options.db; + this.logging = options.logging; + this.supportGuild = options.supportGuild; + } + + public get token(): string { + return this.environment === 'production' + ? this.credentials.token + : this.environment === 'beta' + ? this.credentials.betaToken + : this.credentials.devToken; + } + + public get isProduction(): boolean { + return this.environment === 'production'; + } + + public get isBeta(): boolean { + return this.environment === 'beta'; + } + + public get isDevelopment(): boolean { + return this.environment === 'development'; + } +} + +export interface ConfigOptions { + credentials: Credentials; + environment: Environment; + owners: Snowflake[]; + prefix: string; + channels: Channels; + db: DataBase; + logging: Logging; + supportGuild: SupportGuild; +} + +interface Credentials { + token: string; + betaToken: string; + devToken: string; + hypixelApiKey: string; + wolframAlphaAppId: string; + imgurClientId: string; + imgurClientSecret: string; + sentryDsn: string; + perspectiveApiKey: string; +} + +type Environment = 'production' | 'beta' | 'development'; + +interface Channels { + log: Snowflake; + error: Snowflake; + dm: Snowflake; + servers: Snowflake; +} + +interface DataBase { + host: string; + port: number; + username: string; + password: string; +} + +interface Logging { + db: boolean; + verbose: boolean; + info: boolean; +} + +interface SupportGuild { + id: Snowflake; + invite: string; +} -- cgit