165 lines
4 KiB
Python
165 lines
4 KiB
Python
#!/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() |