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
|
|
@ -1,4 +1,44 @@
|
|||
# PetBot Requirements
|
||||
# Core dependencies for IRC bot functionality
|
||||
|
||||
# IRC client library for connecting to IRC servers
|
||||
irc>=20.3.0
|
||||
|
||||
# Async SQLite database interface for database operations
|
||||
aiosqlite>=0.19.0
|
||||
|
||||
# Environment variable loading (for configuration)
|
||||
python-dotenv>=1.0.0
|
||||
asyncio
|
||||
|
||||
# HTTP client for web interface testing and rate limiting tests
|
||||
aiohttp>=3.8.0
|
||||
|
||||
# Note: The following are part of Python's standard library and don't need installation:
|
||||
# - asyncio (async programming)
|
||||
# - sqlite3 (synchronous SQLite operations)
|
||||
# - json (JSON data handling)
|
||||
# - socket (network communication)
|
||||
# - threading (thread management)
|
||||
# - time (time operations)
|
||||
# - os (operating system interface)
|
||||
# - sys (system parameters)
|
||||
# - logging (logging framework)
|
||||
# - pathlib (path handling)
|
||||
# - urllib.parse (URL parsing)
|
||||
# - datetime (date/time handling)
|
||||
# - typing (type annotations)
|
||||
# - enum (enumerations)
|
||||
# - abc (abstract base classes)
|
||||
# - importlib (import utilities)
|
||||
# - signal (signal handling)
|
||||
# - shutil (file operations)
|
||||
# - gzip (compression)
|
||||
# - tempfile (temporary files)
|
||||
# - http.server (HTTP server)
|
||||
# - random (random numbers)
|
||||
|
||||
# Development and testing dependencies (optional)
|
||||
# These are not required for basic bot operation but useful for development:
|
||||
# pytest>=7.0.0
|
||||
# black>=22.0.0
|
||||
# flake8>=4.0.0
|
||||
Loading…
Add table
Add a link
Reference in a new issue