discordb/main.py
2025-07-13 21:04:53 +03:00

50 lines
1.3 KiB
Python

#!/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())