#!/usr/bin/env python3 """ Setup script for Discord Data Collector """ import os import sys import subprocess from pathlib import Path def check_python_version(): """Check if Python version is compatible.""" if sys.version_info < (3, 8): print("โŒ Python 3.8 or higher is required") sys.exit(1) print(f"โœ… Python {sys.version_info.major}.{sys.version_info.minor} detected") def install_dependencies(): """Install required dependencies.""" print("๐Ÿ“ฆ Installing dependencies...") dependencies = [ "discord.py-self>=2.0.0", "python-dotenv>=1.0.0", "toml>=0.10.2", "colorlog>=6.0.0" ] for dep in dependencies: try: print(f"Installing {dep}...") subprocess.check_call([sys.executable, "-m", "pip", "install", dep]) except subprocess.CalledProcessError as e: print(f"โŒ Failed to install {dep}: {e}") return False print("โœ… All dependencies installed successfully") return True def create_directories(): """Create necessary directories.""" directories = [ "data", "data/backups", "logs", "src" ] for directory in directories: Path(directory).mkdir(parents=True, exist_ok=True) print("โœ… Directories created") def create_config_files(): """Create configuration files if they don't exist.""" # Create .env file env_file = Path(".env") if not env_file.exists(): env_content = """# Discord Data Collector Environment Variables # Add your Discord user token here DISCORD_TOKEN=your_discord_user_token_here """ with open(env_file, "w") as f: f.write(env_content) print("โœ… Created .env file") # Create config.toml file config_file = Path("config.toml") if not config_file.exists(): config_content = """# Discord Data Collector Configuration [database] path = "data/users.json" backup_interval = 3600 [collection] profile_pictures = true bio = true status = true server_membership = true [rate_limiting] request_delay = 1.0 max_requests_per_minute = 30 [monitoring] target_servers = [] monitor_all_servers = true [logging] level = "INFO" file = "logs/collector.log" """ with open(config_file, "w") as f: f.write(config_content) print("โœ… Created config.toml file") def test_imports(): """Test if all imports work correctly.""" print("๐Ÿงช Testing imports...") try: import discord print("โœ… discord.py-self imported successfully") except ImportError as e: print(f"โŒ Failed to import discord.py-self: {e}") return False try: import toml print("โœ… toml imported successfully") except ImportError as e: print(f"โŒ Failed to import toml: {e}") return False try: from dotenv import load_dotenv print("โœ… python-dotenv imported successfully") except ImportError as e: print(f"โŒ Failed to import python-dotenv: {e}") return False return True def main(): """Main setup function.""" print("๐Ÿš€ Discord Data Collector Setup") print("=" * 40) # Check Python version check_python_version() # Create directories create_directories() # Install dependencies if not install_dependencies(): print("โŒ Setup failed during dependency installation") sys.exit(1) # Test imports if not test_imports(): print("โŒ Setup failed during import testing") sys.exit(1) # Create config files create_config_files() print("\nโœ… Setup completed successfully!") print("\n๐Ÿ“ Next steps:") print("1. Edit .env file and add your Discord token") print("2. Optionally modify config.toml settings") print("3. Run: python main.py") print("\nโš ๏ธ Remember: This tool is for educational/research purposes only") if __name__ == "__main__": main()