43 lines
1.9 KiB
Markdown
43 lines
1.9 KiB
Markdown
# 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 永续), 每条都命中 → 信号时有时无。
|
|
|
|
## 修复 (收窄正则)
|
|
```python
|
|
# 修复前 (误杀)
|
|
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 模块
|