@@ -5,25 +5,27 @@ Discord bot for tracking cryptocurrency and asset prices with beautiful charts.
55## Features
66
77- Multiple independent bot instances, one per ticker
8- - Real-time price updates via Pyth Network, Yahoo Finance, and GoldSilver.ai
9- - Discord nicknames display ticker + current price
8+ - Real-time price updates via Pyth Network and Yahoo Finance
9+ - Discord nicknames display ticker and current price
1010- Status cycles through BTC/ETH/SOL conversions and 1h change
1111- Historical price charts with high/low markers
1212- Detailed price embeds with 24h/7d/30d percentage changes
1313- PostgreSQL for persistent price history
14- - Lightweight Alpine-based Docker image (~ 266MB)
14+ - 5-year data retention with tiered aggregation (raw, 5m, hourly, daily, weekly)
15+ - Lightweight Alpine-based Docker image
1516
1617## Quick Start
1718
1819``` bash
1920cp .env.example .env
20- # Edit .env with your Discord bot tokens
21+ # Edit .env with your Discord bot tokens and Pyth feed IDs
2122docker-compose up -d --build
2223```
2324
2425## Slash Commands
2526
2627### /chart price
28+
2729Generate a price chart with high/low markers and percentage change.
2830
2931```
@@ -35,6 +37,7 @@ Generate a price chart with high/low markers and percentage change.
3537| timeframe | 24h | 1h, 6h, 12h, 24h, 48h, 1w, 2w, 30d, 3m |
3638
3739### /price current
40+
3841Display current price with conversions and percentage changes.
3942
4043```
@@ -48,22 +51,26 @@ Shows USD price, 24h/7d/30d changes, and BTC/ETH/SOL conversions.
4851
4952| Ticker | Source |
5053| --------| --------|
51- | BTC, ETH, SOL, and other Pyth feeds | Pyth Network |
54+ | BTC, ETH, SOL, WIF, FARTCOIN, GOLD, SILVER, MSTR, JLP, SEI, SUI, AVAX, BNB, PUMP, XPL, HOOD, SBET, 2Z, ASTER, DOGE, EURO, VOO, OIL | Pyth Network |
5255| DXY | Yahoo Finance |
53- | SSILVER | GoldSilver.ai |
5456
5557## Environment Variables
5658
5759``` bash
58- # Bot tokens - one per ticker
60+ # Price update interval (default: 12 seconds)
61+ UPDATE_INTERVAL_SECONDS=12
62+
63+ # Discord Bot Tokens - one per ticker
5964DISCORD_TOKEN_BTC=your_token
6065DISCORD_TOKEN_ETH=your_token
66+ DISCORD_TOKEN_SOL=your_token
67+ # ... etc
6168
62- # Pyth feed IDs
69+ # Pyth Network Feed IDs (comma-separated)
6370CRYPTO_FEEDS=BTC:feed_id,ETH:feed_id,SOL:feed_id
6471
65- # Optional
66- UPDATE_INTERVAL_SECONDS=12
72+ # Database
73+ DATABASE_URL=postgresql://user:password@postgres:5432/pricebot
6774```
6875
6976## Tech Stack
@@ -78,11 +85,23 @@ UPDATE_INTERVAL_SECONDS=12
7885## Project Structure
7986
8087```
81- ├── bot.py # Main bot, commands, status cycling
82- ├── database.py # PostgreSQL operations
83- ├── price_service.py # Price fetching
88+ ├── bot.py # Main bot, commands, status cycling
89+ ├── database.py # PostgreSQL operations and aggregation
90+ ├── price_service.py # Price fetching (Pyth + Yahoo)
8491├── chart_service.py # Chart generation
8592├── docker-compose.yml
8693├── Dockerfile
87- └── requirements.txt
94+ ├── requirements.txt
95+ └── .env.example
8896```
97+
98+ ## Data Retention
99+
100+ - Raw prices: last 24 hours
101+ - 5-minute aggregates: 7 days
102+ - Hourly aggregates: 30 days
103+ - Daily aggregates: 1 year
104+ - Weekly aggregates: 5 years
105+ - Older data: auto-deleted
106+
107+ Chart queries automatically select the appropriate aggregation level.
0 commit comments