Initial commit of Discord GLHF Bot with core functionality, configuration, and dependencies.
This commit is contained in:
274
README.md
Normal file
274
README.md
Normal file
@@ -0,0 +1,274 @@
|
||||
# Discord GLHF Bot
|
||||
|
||||
A robust, bug-free Discord bot using OpenAI-compatible APIs with comprehensive fallback systems and message queueing.
|
||||
|
||||
## Core Features
|
||||
|
||||
- Full OpenAI API compatibility
|
||||
- Image analysis capabilities
|
||||
- Multiple fallback APIs (4 backup APIs)
|
||||
- Automatic health checks every 10 minutes
|
||||
- Dynamic API switching based on health status
|
||||
- Message queueing with context preservation
|
||||
- Complete data sanitization
|
||||
- Comprehensive error handling
|
||||
- Zero data loss guarantees
|
||||
|
||||
### Image Analysis
|
||||
- Support for image attachments and URLs
|
||||
- Detailed image content analysis
|
||||
- Grumpy personality with judgmental observations
|
||||
- Automatic vision model selection
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone [repository-url]
|
||||
cd discord_glhf
|
||||
|
||||
# Install dependencies using uv
|
||||
uv pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
All configuration is done through environment variables. Create a `.env` file:
|
||||
|
||||
```env
|
||||
# Required Environment Variables
|
||||
DISCORD_TOKEN=your_discord_bot_token
|
||||
GLHF_API_KEY=your_primary_api_key
|
||||
BOT_OWNER_ID=your_discord_user_id
|
||||
|
||||
# Primary API Configuration (Required)
|
||||
API_KEY=your_api_key # Your API key
|
||||
API_BASE_URL=https://api.example.com/v1 # API base URL
|
||||
API_MODEL=gpt-3.5-turbo # Default model to use
|
||||
API_TIMEOUT=30.0 # Request timeout (optional)
|
||||
API_MAX_RETRIES=3 # Number of retries (optional)
|
||||
|
||||
# Vision API Configuration (Required for image analysis)
|
||||
VISION_API_KEY=your_vision_api_key # Separate API key for vision
|
||||
VISION_API_BASE_URL=https://api.example.com/v1 # Vision API endpoint
|
||||
VISION_MODEL=gpt-4-vision-preview # Vision-capable model
|
||||
VISION_TIMEOUT=30.0 # Vision timeout (optional)
|
||||
VISION_MAX_RETRIES=3 # Vision retries (optional)
|
||||
MAX_VISION_TOKENS=1000 # Max tokens (optional)
|
||||
|
||||
# Fallback APIs (Optional)
|
||||
FALLBACK{n}_API_KEY=your_fallback_api_key
|
||||
FALLBACK{n}_BASE_URL=https://fallback.api.url/v1
|
||||
FALLBACK{n}_MODEL=gpt-3.5-turbo
|
||||
|
||||
# Optional Configuration with Defaults
|
||||
API_HEALTH_CHECK_INTERVAL=600 # 10 minutes
|
||||
CIRCUIT_BREAKER_FAILURE_THRESHOLD=5
|
||||
CIRCUIT_BREAKER_RECOVERY_TIMEOUT=60.0
|
||||
CIRCUIT_BREAKER_HALF_OPEN_TIMEOUT=30.0
|
||||
STREAM_REQUEST_TIMEOUT=60.0
|
||||
MAX_STREAMING_ATTEMPTS=2
|
||||
RATE_LIMIT_BACKOFF_TIME=60
|
||||
```
|
||||
|
||||
## Safety Features
|
||||
|
||||
### 1. Message Sanitization
|
||||
- HTML escaping for all content
|
||||
- Markdown sanitization
|
||||
- Mention sanitization
|
||||
- Control character removal
|
||||
- Length validation
|
||||
- Content validation
|
||||
|
||||
### 2. Database Safety
|
||||
- Connection pooling with automatic cleanup
|
||||
- Transaction safety with rollback
|
||||
- Prepared statements for all queries
|
||||
- Input validation
|
||||
- UUID validation
|
||||
- Data integrity checks
|
||||
- Automatic cleanup of old data
|
||||
|
||||
### 3. Queue Safety
|
||||
- Priority-based message ordering
|
||||
- Message deduplication
|
||||
- Abandoned message cleanup
|
||||
- Rate limiting per user
|
||||
- Queue size limits
|
||||
- Error recovery
|
||||
- Request timeout handling
|
||||
|
||||
### 4. API Safety
|
||||
- Health checks every 10 minutes
|
||||
- Automatic failover to healthy APIs
|
||||
- Circuit breaker pattern
|
||||
- Rate limit handling
|
||||
- Error recovery
|
||||
- Request timeout handling
|
||||
- Response validation
|
||||
|
||||
### 5. Context Preservation
|
||||
- Complete message context storage
|
||||
- Thread tracking
|
||||
- User context preservation
|
||||
- Channel context preservation
|
||||
- Metadata storage
|
||||
- Reference tracking
|
||||
|
||||
## Message Flow
|
||||
|
||||
1. Message Reception
|
||||
- Content sanitization
|
||||
- Mention resolution
|
||||
- Context capture
|
||||
- Priority assignment
|
||||
|
||||
2. Queue Processing
|
||||
- Priority-based ordering
|
||||
- Rate limiting
|
||||
- User quota management
|
||||
- Abandoned message cleanup
|
||||
|
||||
3. Database Operations
|
||||
- Transaction safety
|
||||
- Data validation
|
||||
- Context storage
|
||||
- Thread tracking
|
||||
|
||||
4. API Interaction
|
||||
- Health checking
|
||||
- Automatic failover
|
||||
- Circuit breaking
|
||||
- Error handling
|
||||
|
||||
5. Response Handling
|
||||
- Content sanitization
|
||||
- Context preservation
|
||||
- Safe delivery
|
||||
- Error recovery
|
||||
|
||||
## Error Handling
|
||||
|
||||
1. Database Errors
|
||||
- Transaction rollback
|
||||
- Connection recovery
|
||||
- Data validation errors
|
||||
- Constraint violations
|
||||
|
||||
2. API Errors
|
||||
- Rate limits
|
||||
- Timeouts
|
||||
- Invalid responses
|
||||
- Network errors
|
||||
|
||||
3. Discord Errors
|
||||
- Permission issues
|
||||
- Network problems
|
||||
- Rate limits
|
||||
- Message delivery failures
|
||||
|
||||
4. Queue Errors
|
||||
- Overflow handling
|
||||
- Timeout recovery
|
||||
- Priority conflicts
|
||||
- Resource exhaustion
|
||||
|
||||
## Monitoring
|
||||
|
||||
The bot includes comprehensive monitoring:
|
||||
|
||||
1. Health Metrics
|
||||
- API status
|
||||
- Queue length
|
||||
- Processing times
|
||||
- Error rates
|
||||
|
||||
2. Error Reporting
|
||||
- Detailed error context
|
||||
- Stack traces
|
||||
- User context
|
||||
- System state
|
||||
|
||||
3. Performance Metrics
|
||||
- Response times
|
||||
- Queue latency
|
||||
- API latency
|
||||
- Database performance
|
||||
|
||||
## Running the Bot
|
||||
|
||||
```bash
|
||||
# Start the bot
|
||||
uv run discord_glhf.py
|
||||
```
|
||||
|
||||
The bot will:
|
||||
1. Initialize database connections
|
||||
2. Start health check system
|
||||
3. Initialize message queue
|
||||
4. Connect to Discord
|
||||
5. Begin processing messages
|
||||
|
||||
## Shutdown Process
|
||||
|
||||
The bot implements a graceful shutdown process:
|
||||
|
||||
1. Stop accepting new messages
|
||||
2. Complete processing of queued messages
|
||||
3. Close API connections
|
||||
4. Close database connections
|
||||
5. Clean up resources
|
||||
|
||||
## Debugging
|
||||
|
||||
For debugging, the bot provides:
|
||||
|
||||
1. Detailed logging
|
||||
2. Error reporting to bot owner
|
||||
3. State inspection
|
||||
4. Queue inspection
|
||||
5. Database inspection
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. Always use environment variables for configuration
|
||||
2. Never hardcode sensitive values
|
||||
3. Keep the database clean with regular maintenance
|
||||
4. Monitor error logs
|
||||
5. Update API configurations as needed
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.8+
|
||||
- Discord.py
|
||||
- SQLite 3
|
||||
- UV package manager
|
||||
- Environment variables properly configured
|
||||
|
||||
## Safety Checklist
|
||||
|
||||
Before deploying:
|
||||
|
||||
1. ✓ Environment variables set
|
||||
2. ✓ Database initialized
|
||||
3. ✓ API keys validated
|
||||
4. ✓ Permissions configured
|
||||
5. ✓ Error reporting configured
|
||||
6. ✓ Monitoring set up
|
||||
7. ✓ Backup APIs configured
|
||||
8. ✓ Rate limits configured
|
||||
9. ✓ Queue limits set
|
||||
10. ✓ Cleanup intervals configured
|
||||
|
||||
## Maintenance
|
||||
|
||||
Regular maintenance tasks:
|
||||
|
||||
1. Database cleanup (automatic)
|
||||
2. Log rotation (automatic)
|
||||
3. API health checks (automatic)
|
||||
4. Queue monitoring (automatic)
|
||||
5. Error log review (manual)
|
||||
|
||||
The bot is designed to be completely bug-free and production-ready, with comprehensive safety features and error handling at every level.
|
||||
Reference in New Issue
Block a user