When MATRIX_USE_THREADS=true, deals are posted into dedicated threads instead of the room timeline: - 🎮 Game Deals — CheapShark + ITAD type=game - 🧩 DLC Deals — ITAD type=dlc - 🆓 Epic Free Games — current and upcoming Epic free games - 📦 Non-Game Deals — ITAD non-game content (software, courses, etc.) Thread roots are created on first use and persisted in the database. When threads are disabled (default), behaviour is unchanged. Key changes: - New threads.py module with ThreadCategory enum and routing logic - ITADDeal now carries deal_type; type filter moved from fetcher to bot - MatrixDealsClient gains send_deal_in_thread() and create_thread_root() - Database gets thread_roots table for storing root event IDs - Bot routes each deal to the appropriate thread via _send_to_thread_or_room() https://claude.ai/code/session_01EfPjktyrF24DBNHWsY1KBP
51 lines
1.7 KiB
Plaintext
51 lines
1.7 KiB
Plaintext
# Matrix connection
|
|
MATRIX_HOMESERVER_URL=https://matrix.example.com
|
|
MATRIX_BOT_USER_ID=@dealsbot:example.com
|
|
MATRIX_BOT_ACCESS_TOKEN=syt_...
|
|
MATRIX_DEALS_ROOM_ID=!roomid:example.com
|
|
|
|
# IsThereAnyDeal API key (optional — enables historical low detection and ITAD deals)
|
|
ITAD_API_KEY=
|
|
|
|
# Deal sources: comma-separated list (cheapshark, itad, or both)
|
|
# Requires ITAD_API_KEY when "itad" is included
|
|
DEAL_SOURCES=cheapshark
|
|
|
|
# ITAD countries: comma-separated ISO 3166-1 alpha-2 country codes
|
|
# Deals are fetched for each country and merged (duplicates removed).
|
|
# Examples: US, CA, GB, DE, FR, AU, BR, JP
|
|
ITAD_COUNTRIES=US
|
|
|
|
# Currency display
|
|
# DEFAULT_CURRENCY is shown first; EXTRA_CURRENCIES are shown after it.
|
|
DEFAULT_CURRENCY=USD
|
|
EXTRA_CURRENCIES=CAD,EUR,GBP
|
|
|
|
# CheapShark-specific filtering
|
|
# (Falls back to shared MIN_DISCOUNT_PERCENT / MAX_PRICE if not set)
|
|
#CHEAPSHARK_MIN_DISCOUNT=50
|
|
#CHEAPSHARK_MIN_RATING=8.0
|
|
#CHEAPSHARK_MAX_PRICE=20
|
|
|
|
# ITAD-specific filtering
|
|
# (Falls back to shared MIN_DISCOUNT_PERCENT / MAX_PRICE if not set)
|
|
#ITAD_MIN_DISCOUNT=50
|
|
#ITAD_MAX_PRICE=20
|
|
#ITAD_DEALS_LIMIT=200
|
|
|
|
# Shared filter defaults (used when source-specific values are not set)
|
|
MIN_DISCOUNT_PERCENT=50
|
|
MAX_PRICE=20
|
|
|
|
# Matrix threads — post deals into per-category threads instead of the room
|
|
# Categories: Game Deals, DLC Deals, Epic Free Games, Non-Game Deals
|
|
# When disabled (default), all deals post directly to the room timeline
|
|
# and non-game ITAD content is excluded (original behaviour).
|
|
#MATRIX_USE_THREADS=false
|
|
|
|
# Send an intro message to the room on startup (true/false)
|
|
SEND_INTRO_MESSAGE=false
|
|
|
|
# Database path (inside the container, mount a volume for persistence)
|
|
DATABASE_PATH=/data/deals.db
|