import 'dart:io'; class BotConfig { BotConfig({ required this.backendUrl, required this.shareDailyLimit, required this.apiKey, required this.botToken, }); final String backendUrl; final int shareDailyLimit; final String apiKey; final String botToken; static const String defaultBackendUrl = 'https://api.mnemo-cards.online'; static const int defaultShareDailyLimit = 1; factory BotConfig.fromEnvironment({ Map? environment, }) { final env = environment ?? Platform.environment; // Backend URL: MNEMO_BACKEND_URL or BACKEND_URL or default final backendUrl = [ env['MNEMO_BACKEND_URL'], env['BACKEND_URL'], defaultBackendUrl, ].firstWhere( (value) => value != null && value.trim().isNotEmpty, )!; // Share daily limit: BOT_SHARE_DAILY_LIMIT or default final shareDailyLimitStr = env['BOT_SHARE_DAILY_LIMIT']; final shareDailyLimit = shareDailyLimitStr != null ? int.tryParse(shareDailyLimitStr) ?? defaultShareDailyLimit : defaultShareDailyLimit; // API Key: required final apiKey = env['TELEGRAM_BOT_API_KEY']; if (apiKey == null || apiKey.isEmpty) { throw Exception( 'TELEGRAM_BOT_API_KEY environment variable is required'); } // Bot Token: required final botToken = env['TELEGRAM_BOT_TOKEN']; if (botToken == null || botToken.isEmpty) { throw Exception('TELEGRAM_BOT_TOKEN environment variable is required'); } return BotConfig( backendUrl: backendUrl.trim(), shareDailyLimit: shareDailyLimit, apiKey: apiKey, botToken: botToken, ); } }