discordb/main.py

67 lines
2 KiB
Python
Raw Normal View History

2025-07-13 20:04:53 +02:00
#!/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
2025-07-13 20:49:22 +02:00
# 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)
2025-07-13 20:04:53 +02:00
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
2025-07-13 21:31:44 +02:00
raise NotImplementedError("put shit in here i cba to install mariadb locally")
database = MariaDBDatabase(config.database_path)
2025-07-13 20:04:53 +02:00
# 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())