#!/usr/bin/env python3 """ Discord User Data Collector Main application entry point for collecting Discord user data for research purposes. """ import asyncio import logging import sys from pathlib import Path from src.client import DiscordDataClient from src.config import Config from src.database import JSONDatabase from src.logger import setup_logger async def main(): """Main application entry point.""" try: # Setup configuration config = Config() # Setup logging logger = setup_logger(config.log_level, config.log_file) logger.info("Starting Discord Data Collector") # Initialize database database = JSONDatabase(config.database_path) # Initialize Discord client client = DiscordDataClient(config, database) # Start the client logger.info("Starting Discord client...") await client.start(config.discord_token) except KeyboardInterrupt: logger.info("Received keyboard interrupt, shutting down...") except Exception as e: logger.error(f"Fatal error: {e}", exc_info=True) sys.exit(1) finally: if 'client' in locals(): await client.close() logger.info("Application shutdown complete") if __name__ == "__main__": asyncio.run(main())