Files
Hermes-Skills/okx-auto-position/references/tg-forwarder-ops.md
T

89 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: tg-forwarder-ops
description: "TG转发器运维参考 - 2026-09-21 真相: filter_chain 是空链 (死代码), 转发走 handlers/user_handler.py:forward_messages() + 附加 send_message。覆盖挂载配置、SOCKS5端口(7890≠7891)、硬编码黑名单、已废弃做法"
version: 1.1.0
---
# TG转发器运维
> **⚠️ 关键真相 (2026-09-21)**: `/app/filters/` 下的所有 filter (InfoFilter / KeywordFilter / SenderFilter) 是**死代码** — `filter_chain` 是空链 (0 filter), 没人调用。**实际转发流程走 `handlers/user_handler.py:process_forward_rule()`**。要改转发行为只能改 user_handler.py。
>
> **详见** [tg-forwarder-ops-2026-09-21.md](./tg-forwarder-ops-2026-09-21.md) — 容器挂载配置 / SOCKS5 端口坑 (7890 vs 7891) / 时间戳方案 (send_message after forward_messages) / 硬编码黑名单 / 已废弃做法清单。
## 基本信息
- 容器名: `telegramforwarder-telegram-forwarder` (短名: `telegram-forwarder`)
- Bot: `@mikes_MsgForwarder_bot`
- 用户客户端: `@mikes669`
- 数据库: `/app/db/forward.db` (SQLite)
- 环境变量: `/app/.env`
## 转发规则 (2026-09-24 已切换)
- **源: 币圈实盘监控 | 熬鹰 风寻 (chat_id=-1002651333064, chats.id=4)** ← 新频道
- 旧源: 实盘监控 (chat_id=3805472665, chats.id=1) — 已停用, 记录保留
- 目标: 交易信号群 (chat_id=-1003966251111)
- 模式: WHITELIST_THEN_BLACKLIST
- 白名单关键词: 交易员关键词 (麻吉/魏神/熬鹰/风寻/狙击手/百发百胜) AND 信号类型 (开仓/平仓/加仓/减仓) 双匹配
- 硬编码黑名单: 已修复 USDT 误杀 (2026-09-22 实战)
## 修改关键词过滤
```bash
# 1. 导出数据库
docker cp telegram-forwarder:/app/db/forward.db /tmp/forward.db
# 2. 查看当前关键词
sqlite3 /tmp/forward.db "SELECT * FROM keywords;"
# 3. 修改(示例:删除旧的,添加新的)
sqlite3 /tmp/forward.db "DELETE FROM keywords WHERE id=8;"
sqlite3 /tmp/forward.db "INSERT INTO keywords (rule_id, keyword, is_regex, is_blacklist) VALUES (1, '.*', 1, 0);"
# 4. 导回并重启
docker cp /tmp/forward.db telegram-forwarder:/app/db/forward.db
docker restart telegram-forwarder
```
## keywords表字段
| 字段 | 说明 |
|------|------|
| rule_id | 关联的转发规则ID |
| keyword | 关键词或正则表达式 |
| is_regex | 0=普通文本, 1=正则 |
| is_blacklist | 0=白名单(放行), 1=黑名单(拦截) |
## 日志查看
```bash
# 最近日志
docker logs telegram-forwarder --tail 50
# 过滤信号相关
docker logs telegram-forwarder --since 1h 2>&1 | grep -E "转发|匹配|白名单|不转发|过滤"
# 查看是否收到消息
docker logs telegram-forwarder --since 1h 2>&1 | grep "处理转发规则"
```
## Bot命令(通过Telegram发给bot)
- `/lk` 或 `/list_keyword` — 查看关键词列表
- `/a` 或 `/add` — 添加关键词
- `/ar` 或 `/add_regex` — 添加正则关键词
- `/rk` 或 `/remove_keyword` — 删除关键词
- `/sw` 或 `/switch` — 切换模式
⚠️ bot命令需要通过Telegram客户端发送,不能从agent内直接调(gateway占用getUpdates)。
## 重启
```bash
docker restart telegram-forwarder
```
重启后约5秒恢复,会自动重新连接Telegram。
## 常见问题
- **信号不转发**:
1. 检查白名单关键词是否匹配,`docker logs` 看"未匹配到普通白名单关键词"
2. **新频道切换后无消息日志**: 检查 `message_listener.py` 是否用 `event.chat_id` 而不是 `abs(chat.id)` (TG channel id 必带 `-100` 前缀)
3. **黑名单误杀**: 检查 `HARD_BLACKLIST_PATTERNS` 是否包含裸 `usdt|cny|套现`(信号都带 USDT)
- **bot消息被忽略**: 正常,bot自己发的消息不处理(`过滤器识别到机器人消息,忽略处理`)
- **容器内无sqlite3**: 用 `docker cp` 导出到宿主机操作
- **session 被主进程锁**: `cp /app/sessions/user.session /tmp/xx.session` 再连
- **telethon 连不上**: 容器内必带 `proxy=('socks5','127.0.0.1',7891), request_retries=1`
- **修改后无生效**: 任何代码/SQL改动必须 `docker restart telegram-forwarder`