Build canonical spot/future token maps with quote priority, unify cache refresh scheduling, and switch resolver/token tests to map-based token lookups.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1. /refresh now fail-closed: rejects all if ADMIN_CHAT_ID unset or invalid
2. Initial pair cache fill is synchronous — bot waits before accepting queries
3. /refresh reports failure when API fetch fails instead of always saying success
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace unreliable WebSocket connections with on-demand REST API calls
for spot and futures prices. Add cached trading pair list (refreshed
hourly) for symbol validation, and /refresh command for manual updates.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add sync.RWMutex to protect future and spot price maps accessed by
WebSocket handlers (writers) and Telegram bot handlers (readers).
Also adds Alpha token support with caching.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>