4.0 KiB
4.0 KiB
name, description, version
| name | description | version |
|---|---|---|
| tg-forwarder-ops | TG转发器运维参考 - 2026-09-21 真相: filter_chain 是空链 (死代码), 转发走 handlers/user_handler.py:forward_messages() + 附加 send_message。覆盖挂载配置、SOCKS5端口(7890≠7891)、硬编码黑名单、已废弃做法 | 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 — 容器挂载配置 / 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 实战)
修改关键词过滤
# 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=黑名单(拦截) |
日志查看
# 最近日志
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)。
重启
docker restart telegram-forwarder
重启后约5秒恢复,会自动重新连接Telegram。
常见问题
- 信号不转发:
- 检查白名单关键词是否匹配,
docker logs看"未匹配到普通白名单关键词" - 新频道切换后无消息日志: 检查
message_listener.py是否用event.chat_id而不是abs(chat.id)(TG channel id 必带-100前缀) - 黑名单误杀: 检查
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