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

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()