added portals, quest tracking, discord monitor etc etc
This commit is contained in:
parent
72de9b0f7f
commit
dffd295091
312 changed files with 4130 additions and 7 deletions
95
discord-rare-monitor/README.md
Normal file
95
discord-rare-monitor/README.md
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
# Discord Rare Monitor Bot
|
||||
|
||||
A Discord bot that monitors the Dereth Tracker WebSocket stream for rare discoveries and posts filtered notifications to Discord channels.
|
||||
|
||||
## Features
|
||||
|
||||
- **Real-time Monitoring**: Connects to Dereth Tracker WebSocket for instant rare notifications
|
||||
- **Smart Classification**: Automatically classifies rares as "common" or "great" based on keywords
|
||||
- **Rich Embeds**: Posts formatted Discord embeds with location and timestamp information
|
||||
- **Dual Channels**: Posts to separate channels for common and great rares
|
||||
- **Robust Connection**: Automatic reconnection with exponential backoff on connection failures
|
||||
|
||||
## Rare Classification
|
||||
|
||||
### Common Rares
|
||||
Items containing these keywords (except "Frore Crystal"):
|
||||
- Crystal
|
||||
- Jewel
|
||||
- Pearl
|
||||
- Elixir
|
||||
- Kit
|
||||
|
||||
### Great Rares
|
||||
All other rare discoveries not classified as common.
|
||||
|
||||
## Configuration
|
||||
|
||||
The bot is configured via environment variables:
|
||||
|
||||
| Variable | Default | Description |
|
||||
|----------|---------|-------------|
|
||||
| `DISCORD_RARE_BOT_TOKEN` | Required | Discord bot token |
|
||||
| `DERETH_TRACKER_WS_URL` | `ws://dereth-tracker:8765/ws/position` | WebSocket URL |
|
||||
| `COMMON_RARE_CHANNEL_ID` | `1355328792184226014` | Discord channel for common rares |
|
||||
| `GREAT_RARE_CHANNEL_ID` | `1353676584334131211` | Discord channel for great rares |
|
||||
| `LOG_LEVEL` | `INFO` | Logging level (DEBUG, INFO, WARNING, ERROR) |
|
||||
|
||||
## Docker Usage
|
||||
|
||||
The bot is designed to run as a Docker container alongside the Dereth Tracker services:
|
||||
|
||||
```bash
|
||||
# Build and start all services including the Discord bot
|
||||
docker-compose up -d
|
||||
|
||||
# View bot logs
|
||||
docker-compose logs discord-rare-monitor
|
||||
|
||||
# Restart just the bot
|
||||
docker-compose restart discord-rare-monitor
|
||||
```
|
||||
|
||||
## Manual Setup
|
||||
|
||||
1. Create a Discord application and bot at https://discord.com/developers/applications
|
||||
2. Get the bot token and invite the bot to your Discord server
|
||||
3. Set the `DISCORD_RARE_BOT_TOKEN` environment variable
|
||||
4. Ensure the bot has permissions to send messages in the target channels
|
||||
|
||||
## Message Format
|
||||
|
||||
The bot listens for WebSocket messages with this structure:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "rare",
|
||||
"character_name": "PlayerName",
|
||||
"name": "Dark Heart",
|
||||
"timestamp": "2025-06-22T16:00:00Z",
|
||||
"ew": 12.34,
|
||||
"ns": -56.78,
|
||||
"z": 10.5
|
||||
}
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
- **WebSocket Client**: Connects to Dereth Tracker's WebSocket stream
|
||||
- **Message Filter**: Only processes `{"type": "rare"}` messages
|
||||
- **Classifier**: Determines rare type based on name keywords
|
||||
- **Discord Client**: Posts formatted embeds to appropriate channels
|
||||
- **Retry Logic**: Automatic reconnection with exponential backoff
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `discord.py>=2.3.0` - Discord API client
|
||||
- `websockets>=11.0.0` - WebSocket client library
|
||||
|
||||
## Benefits
|
||||
|
||||
- **Zero Duplication**: Each rare generates exactly one notification
|
||||
- **Real-time**: Instant notifications via WebSocket stream
|
||||
- **Lightweight**: Minimal resource usage (~50MB RAM)
|
||||
- **Reliable**: Robust error handling and reconnection logic
|
||||
- **Integrated**: Seamlessly works with existing Dereth Tracker infrastructure
|
||||
Loading…
Add table
Add a link
Reference in a new issue