Files
Hermes-Skills/okx-auto-position/references/forwarder-hard-blacklist-usdt-blocking-2026-09-22.md

1.9 KiB

TG Forwarder 硬编码黑名单误杀 USDT 信号 (2026-09-22 实战)

事故

用户反映"监听频道要更新" → 排查发现 forwarder 一直在跑, 但日志显示:

[用户] 消息命中硬编码黑名单, 跳过转发
最终决定: 不转发

根因: /app/handlers/user_handler.py 的 HARD_BLACKLIST_PATTERNS 含 r'(?i)usdt|cny|套现' 和裸 带单|指导|喊单|牛牛老师、\bVIP\b|\b老师\b。 而所有信号格式都带 USDT(【币种】:BTCUSDT 永续), 每条都命中 → 信号时有时无。

修复 (收窄正则)

# 修复前 (误杀)
r'(?i)usdt|cny|套现',
r'(?i)带单|指导|喊单|牛牛老师',
r'(?i)\bVIP\b|\b老师\b',
# 修复后
r'(?i)(usdt|cny)(?!永续|usdt).{0,4}套现|套现',   # 只拦"套现"
r'(?i)牛牛老师|喊单指导',                          # 去掉裸 带单/指导/喊单
r'(?i)\bVIP群\b|付费指导',                         # 收窄

改完必须 docker restart telegram-forwarder。

两个频道区分 (重要, 易混)

频道 chat_id 标题 监听状态
@shipan_jiankong 2651333064 币圈实盘监控 | 熬鹰 风寻 (新) ❌ 未监听
@jiankongshipan 3805472665 实盘监控 (旧) ✅ 当前监听, 信号来源

forward_rules: source=chats.id 1(=3805472665) → target=chats.id 2(=-1003966251111 交易信号群)。

双白名单 AND 校验 (v4.5.4, 未动)

消息必须同时含交易员关键词(麻吉/魏神/熬鹰/风寻/狙击手/百发百胜) + 信号类型(开仓/平仓/加仓/减仓)才转发。

排查手法

  • 规则库: 容器内 python3 + sqlite3 读 /app/db/forward.db (chats/forward_rules/keywords 表)
  • session 被主进程锁 → cp /app/sessions/user.session /tmp/xx.session 再连
  • 容器内连 TG 必带 proxy=('socks5','127.0.0.1',7891), request_retries=1 + timeout 防挂
  • 容器内无 sqlite3 CLI, 用 python sqlite3 模块