discordb/main.py
2025-07-13 21:49:22 +03:00

66 lines
1.9 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
# Check if we're in the right directory
if not Path("src").exists():
print("❌ Error: 'src' directory not found. Please run from the project root directory.")
sys.exit(1)
# Add src to Python path
sys.path.insert(0, str(Path(__file__).parent))
try:
from src.client import DiscordDataClient
from src.config import Config
from src.database import JSONDatabase
from src.logger import setup_logger
except ImportError as e:
print(f"❌ Import error: {e}")
print("\n🔧 To fix this, try:")
print("1. Run: python setup.py")
print("2. Or run: python test_imports.py")
print("3. Or install dependencies: pip install discord.py-self python-dotenv toml colorlog")
sys.exit(1)
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())