import os import configparser from pathlib import Path def validate_env_vars(): """Validate that required environment variables are set and non-empty.""" required_vars = [ 'DISCORD_TOKEN', 'ALLOWED_GUILD_ID', 'PANEL_URL', 'CLIENT_API_KEY', 'APPLICATION_API_KEY' ] missing_vars = [var for var in required_vars if not os.getenv(var)] if missing_vars: raise ValueError(f"Missing required environment variables: {', '.join(missing_vars)}") def generate_config(): """Generate config.ini from environment variables.""" # Validate environment variables first validate_env_vars() config = configparser.ConfigParser() # Discord section - ensure all values are strings config['Discord'] = { 'Token': str(os.getenv('DISCORD_TOKEN')), 'AllowedGuildID': str(os.getenv('ALLOWED_GUILD_ID')) } # Pterodactyl section - ensure all values are strings config['Pterodactyl'] = { 'PanelURL': str(os.getenv('PANEL_URL')), 'ClientAPIKey': str(os.getenv('CLIENT_API_KEY')), 'ApplicationAPIKey': str(os.getenv('APPLICATION_API_KEY')) } # Write to file config_path = Path(os.getenv('CONFIG_PATH', 'config.ini')) config_path.parent.mkdir(exist_ok=True, parents=True) with open(config_path, 'w') as configfile: config.write(configfile) print(f"Config file generated at {config_path}") if __name__ == "__main__": generate_config()