Update "Features"
1 parent
2b15333bb6
commit
369560ac8b
1 file changed
+248
+248
@@ -0,0 +1,248 @@
|
|||||||
|
# Features
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Pterodisbot provides a comprehensive suite of features for monitoring and managing Pterodactyl game servers through Discord. This page documents each feature in detail.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎮 Server Management
|
||||||
|
|
||||||
|
### Interactive Server Selection
|
||||||
|
- **Dropdown Menu**: `/server_status` command displays an intuitive dropdown with all available game servers
|
||||||
|
- **Server Information**: Each option shows server name and description (truncated to 50 chars)
|
||||||
|
- **Statistics Dashboard**: Shows total servers, online count, and offline count before selection
|
||||||
|
|
||||||
|
### Real-time Power Controls
|
||||||
|
Color-coded button controls for server power management:
|
||||||
|
- 🟢 **Green Start Button** - Powers on the server
|
||||||
|
- 🔴 **Red Stop Button** - Gracefully shuts down the server
|
||||||
|
- 🔵 **Blue Restart Button** - Reboots the server
|
||||||
|
- ⚪ **Grey Show Address Button** - Displays connection information (IP:Port)
|
||||||
|
|
||||||
|
### Connection Information
|
||||||
|
- Instantly view server IP addresses and ports
|
||||||
|
- Fetches default allocation from Pterodactyl panel
|
||||||
|
- Displayed in ephemeral embed (private to requesting user)
|
||||||
|
|
||||||
|
### Multi-channel Embeds
|
||||||
|
- Deploy server status displays across any channels where the bot has permissions
|
||||||
|
- Each server can have one active embed at a time
|
||||||
|
- Automatic cleanup of previous embeds when recreating
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Server Monitoring
|
||||||
|
|
||||||
|
### Live Status Tracking
|
||||||
|
- Auto-updating embeds display current server state (online/offline/starting)
|
||||||
|
- Color-coded status: 🔵 Blue for online, 🔴 Red for offline
|
||||||
|
- Last updated timestamp on every embed
|
||||||
|
|
||||||
|
### Resource Usage Metrics
|
||||||
|
Real-time monitoring of:
|
||||||
|
| Metric | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| **CPU Usage** | Percentage with dynamic scaling for multi-core servers |
|
||||||
|
| **Memory Consumption** | Current usage vs. allocated limit (MiB) |
|
||||||
|
| **Disk Space** | Current usage vs. allocated limit (MiB) |
|
||||||
|
| **Network Activity** | Incoming/outgoing traffic (MiB) |
|
||||||
|
| **Uptime Counter** | Human-readable formatting (seconds, minutes, hours, days) |
|
||||||
|
|
||||||
|
### Visual Metrics Graphs
|
||||||
|
- **Combined CPU and Memory Graphs** over the last minute
|
||||||
|
- **6 data points** captured at 10-second intervals
|
||||||
|
- **Discord dark theme-optimized styling** (#2f3136 background)
|
||||||
|
- **Automatic graph generation** and embedding for running servers
|
||||||
|
- **Dynamic CPU scaling** (100% increments) for accurate multi-vCPU visualization
|
||||||
|
- **Trend indicators** (increasing/decreasing/stable) for quick status assessment
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Intelligent Update System
|
||||||
|
|
||||||
|
### Smart Update Triggers
|
||||||
|
Embeds refresh automatically when:
|
||||||
|
| Trigger | Condition |
|
||||||
|
|---------|-----------|
|
||||||
|
| **Power State Change** | Server transitions between offline ↔ starting ↔ running |
|
||||||
|
| **Significant CPU Change** | CPU usage shifts by more than 50% |
|
||||||
|
| **First Detection** | Server detected for the first time |
|
||||||
|
| **Periodic Uptime** | Running servers reach 10-minute intervals |
|
||||||
|
|
||||||
|
### Rate Limit Protection
|
||||||
|
- Built-in delays (0.5s between servers, 1s during refresh) prevent Discord API throttling
|
||||||
|
- Optimized API calls minimize unnecessary requests through change detection
|
||||||
|
- Background task management with asynchronous update loop running every 10 seconds
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔒 Security & Access Control
|
||||||
|
|
||||||
|
### Single-Guild Restriction
|
||||||
|
- Bot operates exclusively in your designated Discord server (`AllowedGuildID`)
|
||||||
|
- All interactions from other guilds are rejected with ephemeral message
|
||||||
|
|
||||||
|
### Role-based Permissions
|
||||||
|
- **"Game Server User" role required** for all server interactions
|
||||||
|
- Exact name match required (case-sensitive)
|
||||||
|
- Role used purely for access control - no special Discord permissions needed
|
||||||
|
|
||||||
|
### Administrator Commands
|
||||||
|
- Special management commands restricted to server administrators
|
||||||
|
- `/refresh_embeds` - Force refresh all embeds
|
||||||
|
- `/purge_embeds` - Permanently delete all embeds
|
||||||
|
|
||||||
|
### Interaction Validation
|
||||||
|
- Every button press and command verified for proper authorization
|
||||||
|
- Guild check + role check on every interaction
|
||||||
|
- Ephemeral error messages for unauthorized attempts
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💾 Data Persistence
|
||||||
|
|
||||||
|
### Embed Location Storage
|
||||||
|
- Automatically remembers where embeds are posted
|
||||||
|
- Survives bot restarts and crashes
|
||||||
|
- Stored in `embed/embed_locations.json`
|
||||||
|
|
||||||
|
### JSON-based Storage
|
||||||
|
- Human-readable embed tracking format:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"server_identifier": {
|
||||||
|
"channel_id": "123456789012345678",
|
||||||
|
"message_id": "987654321098765432"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Metrics History
|
||||||
|
- Maintains 1 minute of server metrics data (6 data points per server)
|
||||||
|
- Automatic FIFO rotation using `deque(maxlen=6)`
|
||||||
|
- In-memory only (cleared on restart)
|
||||||
|
|
||||||
|
### Automatic Cleanup
|
||||||
|
- Removes tracking for deleted embeds (Discord NotFound errors)
|
||||||
|
- Cleans up metrics for servers that no longer exist in panel
|
||||||
|
- Runs during each update cycle
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡️ Reliability Features
|
||||||
|
|
||||||
|
### Comprehensive Error Handling
|
||||||
|
- Graceful recovery from API failures and network issues
|
||||||
|
- Failed embed updates logged but don't crash the update cycle
|
||||||
|
- Structured exception hierarchy for different failure modes
|
||||||
|
|
||||||
|
### Rotating Log Files
|
||||||
|
- Automatic log rotation when file reaches 5MB
|
||||||
|
- Keeps 3 previous log files (`pterodisbot.log.1`, `.2`, `.3`)
|
||||||
|
- UTF-8 encoding for international character support
|
||||||
|
|
||||||
|
### Debug-level Logging
|
||||||
|
- Detailed operational logs for troubleshooting
|
||||||
|
- API calls, state changes, cache operations at DEBUG level
|
||||||
|
- General operations at INFO level
|
||||||
|
|
||||||
|
### Graceful Shutdown
|
||||||
|
- Proper cleanup on SIGINT/SIGTERM signals (Docker-friendly)
|
||||||
|
- Saves embed locations before shutdown
|
||||||
|
- Closes API sessions cleanly
|
||||||
|
|
||||||
|
### Configuration Validation
|
||||||
|
- Startup verification of all required settings
|
||||||
|
- API key format validation (ptlc_/ptla_ or pacc_/papp_)
|
||||||
|
- URL protocol validation (http:// or https://)
|
||||||
|
- Guild ID integer validation
|
||||||
|
|
||||||
|
### API Key Validation
|
||||||
|
- Checks for correct Pterodactyl API key formats
|
||||||
|
- Validates both client and application keys at startup
|
||||||
|
- Clear error messages for misconfigured keys
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 User Interface
|
||||||
|
|
||||||
|
### Color-coded Status
|
||||||
|
- 🔵 **Blue** for online/running servers
|
||||||
|
- 🔴 **Red** for offline/stopped servers
|
||||||
|
- Embed titles reflect current state
|
||||||
|
|
||||||
|
### Ephemeral Interactions
|
||||||
|
- Private responses visible only to command users
|
||||||
|
- `/server_status` dashboard is ephemeral
|
||||||
|
- Button responses are ephemeral
|
||||||
|
- Address display is ephemeral
|
||||||
|
|
||||||
|
### Real-time Feedback
|
||||||
|
- Instant confirmation messages for all actions
|
||||||
|
- Start/Stop/Restart show "is starting...", "is stopping...", "is restarting..."
|
||||||
|
- Error messages include API response details
|
||||||
|
|
||||||
|
### Persistent Controls
|
||||||
|
- Server control buttons remain functional indefinitely
|
||||||
|
- Views created with `timeout=None` for infinite persistence
|
||||||
|
- Survives bot restarts (re-registered on startup)
|
||||||
|
|
||||||
|
### Responsive Design
|
||||||
|
- Clean, Discord-optimized embed layouts
|
||||||
|
- Code-block formatting for resource usage tables
|
||||||
|
- Proper field inline/block arrangement
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Administrator Tools
|
||||||
|
|
||||||
|
### Bulk Embed Refresh (`/refresh_embeds`)
|
||||||
|
- Force-refresh all server status embeds with one command
|
||||||
|
- Recreates all tracked embeds with fresh data
|
||||||
|
- Deletes old embed messages to prevent duplication
|
||||||
|
- Updates embed tracking storage
|
||||||
|
- Provides statistics on deleted and created embeds
|
||||||
|
|
||||||
|
### Complete Purge System (`/purge_embeds`)
|
||||||
|
- Remove all bot embeds from the server with detailed statistics
|
||||||
|
- Real-time progress updates during multi-embed operations
|
||||||
|
- Shows deleted, missing, and error counts
|
||||||
|
- Success rate percentage calculation
|
||||||
|
- Clears embed tracking file
|
||||||
|
|
||||||
|
### Progress Tracking
|
||||||
|
- Real-time progress updates during multi-embed operations
|
||||||
|
- Updates every 5 embeds processed
|
||||||
|
- Ephemeral progress embed with live counters
|
||||||
|
|
||||||
|
### Comprehensive Logging
|
||||||
|
- All administrative actions logged with user attribution
|
||||||
|
- Command invocation, success/failure, statistics
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Feature Comparison Table
|
||||||
|
|
||||||
|
| Feature | Traditional | Docker | Kubernetes |
|
||||||
|
|---------|-------------|--------|------------|
|
||||||
|
| Server Management | ✅ | ✅ | ✅ |
|
||||||
|
| Real-time Monitoring | ✅ | ✅ | ✅ |
|
||||||
|
| Metrics Graphs | ✅ | ✅ | ✅ |
|
||||||
|
| Role-based Access | ✅ | ✅ | ✅ |
|
||||||
|
| Persistent Embeds | ✅ | ✅ | ✅ |
|
||||||
|
| Admin Tools | ✅ | ✅ | ✅ |
|
||||||
|
| Auto-restart | Manual | `--restart unless-stopped` | `restartPolicy: Always` |
|
||||||
|
| Log Persistence | Local files | Volume mount | PVC |
|
||||||
|
| Config Management | config.ini | Env vars / Volume | Secrets |
|
||||||
|
| Scaling | Manual | Manual | HPA support |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Related Pages
|
||||||
|
|
||||||
|
- [Architecture](/Architecture) - System design and data flow
|
||||||
|
- [Installation](/Installation) - Deployment guides
|
||||||
|
- [Configuration](/Configuration) - Config options
|
||||||
|
- [Usage](/Usage) - Commands and workflows
|
||||||
|
- [Contributing](/Contributing) - Development guidelines
|
||||||
Reference in new issue
Block a user