3.5 KiB
3.5 KiB
Discord Data Collector - Agent Guide
Commands
- Setup:
python setup.py
- Install dependencies and create config files - Run Main:
python main.py
- Start Discord data collector - CLI Tools:
python cli.py [command]
- Available: export, stats, search, servers, user-servers, server-users, backup, cleanup, test - Test Imports:
python test_imports.py
- Verify all dependencies work - Install Dependencies:
pip install -r requirements.txt
Architecture
- Entry Points:
main.py
(main app),cli.py
(CLI tools),setup.py
(installation) - Core Modules:
src/client.py
- Discord client implementation with data collectionsrc/database.py
- Database manager with MariaDB->JSON fallback, UserData dataclasssrc/config.py
- TOML/env configuration managementsrc/rate_limiter.py
- API rate limitingsrc/logger.py
- Logging setup
- Data Storage: MariaDB (primary) or JSON files in
data/
directory, backups indata/backups/
- Configuration:
config.toml
for app settings,.env
for Discord token
Code Style
- Python: 3.8+ required, async/await patterns throughout
- Imports: Standard library first, third-party, then local (
from .module import Class
) - Error Handling: Comprehensive try/catch with logging, graceful degradation
- Naming: snake_case for variables/functions, PascalCase for classes
- Types: Type hints required (
typing
module), dataclasses for data structures - Async: All I/O operations use async/await, proper cleanup in finally blocks
Recent Changes & Fixes
Database Integration (2025-07-14)
- ✅ Remote MariaDB Support: Added full support for remote MariaDB connections via .env credentials
- ✅ MariaDB->JSON Fallback: Smart database factory that tries MariaDB first, falls back to JSON
- ✅ Dictionary Cursors: Fixed asyncmy integration to return proper dictionary results instead of tuples
- ✅ Transaction Handling: Proper async transaction management with START TRANSACTION/COMMIT/ROLLBACK
- ✅ Duplicate Key Handling: Added INSERT IGNORE to prevent duplicate user-server entries
Discord Data Collection Improvements
- ✅ Enhanced Bio Collection: Multiple fallback methods for user bio extraction (direct, profile fetch, activity-based)
- ✅ Better Status Tracking: Comprehensive status collection including platform-specific status (desktop/mobile/web)
- ✅ Activity Tracking: Multi-activity support with proper type detection and formatting
- ✅ Discord API Fixes: Fixed Guild.fetch_members() coroutine handling for discord.py-self
CLI Enhancements
- ✅ Server Management Commands: Added
servers
,user-servers
,server-users
commands for detailed server tracking - ✅ Enhanced Search: Search results now include bio, status, activity, and server membership info
- ✅ Better Formatting: Improved output formatting with truncation and better readability
Network & Connectivity
- ✅ Connection Testing: Added early Discord connectivity testing with clear error messages
- ✅ Graceful Error Handling: Better error messages for network issues and missing dependencies
Production Status
- Database: ✅ Working (11 users collected from 1 server)
- Discord Integration: ✅ Working (logged in as _pixelparadox#0, 5 servers connected)
- Data Collection: ✅ Working (users, status, server membership being tracked)
- Remote Storage: ✅ Working (MariaDB at xargana.tr:3306, ~52KB database)