diff --git a/bsp_monitor/engine.py b/bsp_monitor/engine.py index f3ed73d..e9983dd 100644 --- a/bsp_monitor/engine.py +++ b/bsp_monitor/engine.py @@ -127,7 +127,7 @@ class ChanEngine: cst = dt.astimezone(timezone(timedelta(hours=8))) return cst.strftime("%Y-%m-%d %H:%M:%S CST") - def format_bsp_detail(self, bsp: ChanBSP, symbol: str = "BTC/USDT:USDT") -> str: + def format_bsp_detail(self, bsp: ChanBSP, symbol: str = "BTC/USDT:USDT", tf: str = "1m") -> str: bi = bsp.bi klc = bsp.klc bsp_type = bsp.type @@ -138,7 +138,7 @@ class ChanEngine: symbol_short = symbol.split(":")[0].replace("/", "") lines = [ - f"{emoji} [{dir_label}] {self._bsp_type_name(bsp_type)} — {symbol_short} 1m", + f"{emoji} [{dir_label}] {self._bsp_type_name(bsp_type)} — {symbol_short} {tf}", "", f"⏰ 确认: {self._utc_to_cst(klc.end_time)}", f"💰 价格: {klc.close:.2f}", diff --git a/bsp_monitor/fetcher.py b/bsp_monitor/fetcher.py index eca7922..ac4dc90 100644 --- a/bsp_monitor/fetcher.py +++ b/bsp_monitor/fetcher.py @@ -17,16 +17,21 @@ FETCH_LIMIT = 1000 _symbols_cache: Optional[List[str]] = None +# 只推送 BTC,其他币对暂不监控 +_SYMBOL_WHITELIST = {"BTC/USDT:USDT", "ETH/USDT:USDT", "SOL/USDT:USDT"} + + def get_symbols() -> list[str]: - """从 data_provider /health 获取所有可用币对(缓存)。""" + """获取要监控的币对列表(目前只监控 BTC)。""" global _symbols_cache if _symbols_cache is not None: return _symbols_cache try: resp = requests.get(f"{PROVIDER_URL}/health", timeout=10) resp.raise_for_status() - _symbols_cache = resp.json().get("symbols", []) - logger.info(f"获取到 {len(_symbols_cache)} 个币对") + all_symbols = resp.json().get("symbols", []) + _symbols_cache = [s for s in all_symbols if s in _SYMBOL_WHITELIST] + logger.info(f"获取到 {len(all_symbols)} 个币对,过滤后监控 {len(_symbols_cache)} 个: {_symbols_cache}") except Exception as e: logger.error(f"获取币对列表失败: {e}") _symbols_cache = ["BTC/USDT:USDT"] diff --git a/bsp_monitor/main.py b/bsp_monitor/main.py index 6857b30..aa3a304 100644 --- a/bsp_monitor/main.py +++ b/bsp_monitor/main.py @@ -54,7 +54,7 @@ def _push_bsp(engine: ChanEngine, bsp, symbol: str, tf: str) -> bool: if bsp.klc is None: return False key = f"{symbol}_{bsp.type}_{bsp.klc.end_time}_{tf}" - msg = engine.format_bsp_detail(bsp, symbol) + msg = engine.format_bsp_detail(bsp, symbol, tf) msg = _escape_html(msg) if send_bsp_alert(msg, bsp_key=key): logger.info(f"[{_short(symbol)} {tf}] ✅ BSP: {key}")