Petbot/config.py
megaproxy 915aa00bea 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>
2025-07-15 20:10:43 +00:00

68 lines
No EOL
1.8 KiB
Python

#!/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
}
}