diff options
Diffstat (limited to 'src/config.ts')
| -rw-r--r-- | src/config.ts | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..dc3889a --- /dev/null +++ b/src/config.ts @@ -0,0 +1,51 @@ +import dotenv from "dotenv"; + +if (!process.env.SKIP_DOTENV) { + dotenv.config(); +} + +class ConfigError extends Error { + constructor(message: string) { + super(message); + this.name = "ConfigError"; + } +} + +const tgWebhookUrl = process.env.TELEGRAM_WEBHOOK_URL || null; +if (!tgWebhookUrl) { + throw new ConfigError("Missing env var TELEGRAM_WEBHOOK_URL"); +} + +const tgBotToken = process.env.TELEGRAM_BOT_TOKEN || null; +if (!tgBotToken) { + throw new ConfigError("Missing env var TELEGRAM_BOT_TOKEN"); +} + +const tgUserIds = process.env.TELEGRAM_USER_IDS + ? process.env.TELEGRAM_USER_IDS?.split(",") + .map(Number.parseInt) + : null; +if (!tgUserIds) { + throw new ConfigError("Missing env var TELEGRAM_USER_IDS"); +} + +const sheetsSpreadsheetId = process.env.SHEETS_SPREADSHEET_ID || null; +if (!sheetsSpreadsheetId) { + throw new ConfigError("Missing env var SHEETS_SPREADSHEET_ID"); +} + +const sheetsRange = process.env.SHEETS_RANGE || null; +if (!sheetsRange) { + throw new ConfigError("Missing env var SHEETS_RANGE"); +} + +const config = { + port: process.env.PORT ? Number(process.env.PORT) : 3000, + tgWebhookUrl, + tgBotToken, + tgUserIds, + sheetsSpreadsheetId, + sheetsRange, +}; + +export default config; |
