搬运任务与持续监听实战
TG Migrator 提供两种互补的搬运工作流:
- 单次/批量搬运任务(Tasks):直接向 Bot 发送消息链接或区间,随发随搬。
- 持续监听路由(Watch Routes):将源频道/群组/子话题与一个或多个目的地长期绑定,实现 7×24 小时实时同步 + 历史回溯。
1. 发起单次与批量搬运任务
日常想要搬运某条消息、整组相册(Album)或某一段历史消息时,直接把链接发给 Bot 即可。
支持的链接与区间格式
| 搬运场景 | 直接发送给 Bot 的内容示例 |
|---|---|
| 单条消息 / 整组相册 | https://t.me/c/123456789/42https://t.me/public_channel/42 |
| 子 Topic 内的单条消息 | https://t.me/c/123456789/15/42 (自动识别子话题 15 的第 42 号消息) |
| 消息 ID 区间(连字符写法) | https://t.me/c/123456789/100-500https://t.me/c/123456789/15/100-500 (仅扫描子话题 15 内 100~500 号消息) |
| 消息 ID 区间(首尾两条链接) | https://t.me/c/123456789/100 https://t.me/c/123456789/500 |
| 私密群邀请链接 | https://t.me/+AbCdEfGhIjKlMnOp (需读取号已加入该群) |
选择目的地并启动
当你发送链接后:
- Bot 会弹出目的地多选卡片(例如
☑️ #1 归档群_t128、⬜ #2 nas_video)。 - 点击按钮即可勾选或取消(支持一源多投,例如同时发往 Telegram 群并备份到 WebDAV)。
- 点击
🚀 开始,扫描器就会将消息入队并由后台 Worker 开始搬运。
相册自动聚合与全局幂等去重
- 相册自动完整搬运:即便你只复制了 9 宫格相册中第 1 张图的链接,TG Migrator 也会自动向前后探测相同的
grouped_id,把整组相册合并为一个任务原样发出,绝不会拆散成单张刷屏。 - 自动去重:所有文件按 Telegram 全局唯一
doc_id / photo_id计算哈希去重。重复扫描重叠区间时,已搬运过的内容会自动跳过。
2. 持续监听路由(/routes)
如果你希望长期跟踪某个群组/频道(或其中某个特定的子 Topic),让它每发一条新内容就自动同步到你的目的地,请使用 路由(Route)。
新建监听路由步骤
- 打开
🔁 路由→ 点击➕ 新建路由(或发送/add_route)。 - 按 4 步向导填写:
- 路由名称:如
design_channel_sync - 来源(Source):
- 直接粘贴一条源群组/频道的消息链接;
- 💡 锁定源子 Topic 技巧:如果你粘贴的是带有子话题的链接(如
https://t.me/c/123456/15/99),该路由会自动锁定只监听子话题15,群内其他话题的消息不会混入! - 也支持直接输入
@用户名或-100群ID 话题ID。
- 目的地编号:输入一个或多个目的地 ID,用逗号分隔(如
1, 2)。 - 开启实时监听(
y/n):选y即可立即生效。
- 路由名称:如
实时事件 + 水位线轮询「双保险机制」
单纯依赖客户端实时事件在断网或容器重启时会漏消息。因此 TG Migrator 采用了双引擎设计:
- Telethon 实时事件流:源端发消息瞬间实时捕获(遇到相册自动等待 2.5 秒聚合成组后入队)。
last_seen_msg_id水位线周期轮询:每隔watch.poll_interval_seconds(默认300秒),自动检查是否有比数据库水位线更新的消息。哪怕服务器断网维护半天,恢复后也会自动从断点补齐停机期间漏掉的所有消息!
在路由上回溯历史消息(📜 扫描历史)
进入 🔁 路由 → 点击某条路由 → 点击 📜 扫描历史:
全部历史(从 1 开始):从头到尾完整搬运该源频道(或源子话题)的所有存量历史消息。指定范围:输入起始ID - 结束ID(如1 - 1000或首尾两条消息链接)进行分段回溯。⏩ 立即补齐:不等待 300 秒定时器,立刻执行一次增量拉取。
3. 关键词与正则内容过滤(/filters)
无论是单次任务还是长期监听,都可以通过过滤规则自动拦截广告、推广链接或特定关键字。
- 打开过滤面板:发送
/filters(或进入⚙️ 设置→🧹 过滤规则)。 - 添加关键词过滤:text
/filter_add keyword 广告合作 - 添加正则表达式过滤(例如屏蔽所有含外链或推广群链接的消息):text
/filter_add regex https?://t\.me/(\+|joinchat/)\S+ - 删除规则:text
/filter_del 1
4. 单路由独立参数覆盖(/route_set)
如果你希望全局默认保留消息说明文字(Caption),但希望某一条特定路由在搬运时自动去掉文字、或者只搬运视频不搬运纯文本,可以使用路由级参数覆盖:
text
# 仅在 1 号路由上剥离媒体说明文字(只发纯图/纯视频)
/route_set 1 transfer.drop_caption true
# 仅在 1 号路由上忽略纯文本消息
/route_set 1 transfer.include.text false
# 清除 1 号路由的覆盖项,恢复跟随全局设置
/route_set 1 transfer.drop_caption -5. 队列控制与故障恢复
- 查看实时队列与磁盘余量:发送
/status(或点击主菜单📊 状态)。 - 暂停与恢复队列:发送
/pause(等待当前正在传输的文件完成后安全暂停)与/resume。 - 一键重试失败项:发送
/retry(重试全部失败项)或/retry 5(仅重试任务#5中的失败项)。 - 取消正在执行的任务:发送
/cancel_task 5(或在📋 任务详情页点击✖️ 取消任务)。 - 目的地到达率校验:发送
/verify,系统会自动抽检已投递到 Telegram 目的地的消息是否仍然完好存在。