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>
44 lines
No EOL
1.3 KiB
Text
44 lines
No EOL
1.3 KiB
Text
# 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
|
|
|
|
# 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 |