Implement comprehensive rate limiting system and item spawn configuration
Major Features Added: - Complete token bucket rate limiting for IRC commands and web interface - Per-user rate tracking with category-based limits (Basic, Gameplay, Management, Admin, Web) - Admin commands for rate limit management (\!rate_stats, \!rate_user, \!rate_unban, \!rate_reset) - Automatic violation tracking and temporary bans with cleanup - Global item spawn multiplier system with 75% spawn rate reduction - Central admin configuration system (config.py) - One-command bot startup script (start_petbot.sh) Rate Limiting: - Token bucket algorithm with burst capacity and refill rates - Category limits: Basic (20/min), Gameplay (10/min), Management (5/min), Web (60/min) - Graceful violation handling with user-friendly error messages - Admin exemption and override capabilities - Background cleanup of old violations and expired bans Item Spawn System: - Added global_spawn_multiplier to config/items.json for easy adjustment - Reduced all individual spawn rates by 75% (multiplied by 0.25) - Admins can fine-tune both global multiplier and individual item rates - Game engine integration applies multiplier to all spawn calculations Infrastructure: - Single admin user configuration in config.py - Enhanced startup script with dependency management and verification - Updated documentation and help system with rate limiting guide - Comprehensive test suite for rate limiting functionality Security: - Rate limiting protects against command spam and abuse - IP-based tracking for web interface requests - Proper error handling and status codes (429 for rate limits) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f8ac661cd1
commit
915aa00bea
28 changed files with 5730 additions and 57 deletions
68
config.py
Normal file
68
config.py
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
PetBot Configuration
|
||||
Central configuration file for admin users and other settings
|
||||
"""
|
||||
|
||||
# =============================================================================
|
||||
# ADMIN CONFIGURATION - Edit this to change the admin user
|
||||
# =============================================================================
|
||||
ADMIN_USER = "megasconed" # The single admin user who can run admin commands
|
||||
# =============================================================================
|
||||
|
||||
# IRC Configuration
|
||||
IRC_CONFIG = {
|
||||
"server": "irc.libera.chat",
|
||||
"port": 6667,
|
||||
"nickname": "PetBot",
|
||||
"channel": "#petz",
|
||||
"command_prefix": "!"
|
||||
}
|
||||
|
||||
# Web Server Configuration
|
||||
WEB_CONFIG = {
|
||||
"port": 8080,
|
||||
"host": "localhost"
|
||||
}
|
||||
|
||||
# Rate Limiting Configuration
|
||||
RATE_LIMIT_CONFIG = {
|
||||
"enabled": True,
|
||||
"admin_users": [ADMIN_USER], # Uses the admin user from above
|
||||
"categories": {
|
||||
"basic": {
|
||||
"requests_per_minute": 20,
|
||||
"burst_capacity": 5,
|
||||
"cooldown_seconds": 1
|
||||
},
|
||||
"gameplay": {
|
||||
"requests_per_minute": 10,
|
||||
"burst_capacity": 3,
|
||||
"cooldown_seconds": 3
|
||||
},
|
||||
"management": {
|
||||
"requests_per_minute": 5,
|
||||
"burst_capacity": 2,
|
||||
"cooldown_seconds": 5
|
||||
},
|
||||
"admin": {
|
||||
"requests_per_minute": 100,
|
||||
"burst_capacity": 10,
|
||||
"cooldown_seconds": 0
|
||||
},
|
||||
"web": {
|
||||
"requests_per_minute": 60,
|
||||
"burst_capacity": 10,
|
||||
"cooldown_seconds": 1
|
||||
}
|
||||
},
|
||||
"global_limits": {
|
||||
"max_requests_per_minute": 200,
|
||||
"max_concurrent_users": 100
|
||||
},
|
||||
"violation_penalties": {
|
||||
"warning_threshold": 3,
|
||||
"temporary_ban_threshold": 10,
|
||||
"temporary_ban_duration": 300 # 5 minutes
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue