账号登录与目的地绑定(含子 Topic 详解)
本篇手册详细介绍如何安全登录个人读取号(/login)、如何绑定 Telegram 群组/频道以及特定的子 Topic(话题)、如何配置本地 NAS 与 WebDAV 目的地,以及如何处理超过 2GB 的超大文件。
1. 登录个人读取账号(/login)
Telegram 官方限制 Bot 无法通过私密邀请链接进群,也无法读取非自己管理的私密频道或开启了「禁止转发(noforwards)」的群组内容。通过登录一个你自己的个人号作为 读取账号(Reader),凡是你个人号能看到的群组/频道,TG Migrator 都能帮你搬运出来。
手把手登录步骤
- 在与 Bot 的私聊界面点击
🔑 账号(或发送/login)。 - 点击
📱 开始登录,发送带国际区号的手机号(例如+8613800138000或+12025550123)。 - Telegram 官方客户端会收到 5 位数字登录验证码。
务必使用面板上的数字键盘点击输入!
切勿在 Telegram 聊天框里直接打字发送这串验证码!只要验证码作为普通消息发进 Telegram 聊天,Telegram 官方风控就会立刻判定验证码泄露并使其作废。请务必通过点击 Bot 消息下方的内联数字按钮输入,输完点
✔️提交。 - 若开启了两步验证密码(2FA): 直接在聊天框发送你的两步验证密码(Bot 收到后会立即删除该消息)。
密码含有 `_`、`*`、`~` 或 `||`?请用反引号包裹!
Telegram 客户端会自动将成对的
_(斜体)、*(粗体)、~(删除线)、||(剧透)解析为富文本格式并吞掉符号本身。 如果你的密码包含这些特殊符号,请用英文单反引号包裹发送:text`my_s3cret_p*ssw0rd`如果不小心直接发送导致符号被 Telegram 吞掉,Bot 会自动检测出富文本实体、拒绝错误密码,并提示你用反引号重发。
2. 绑定 Telegram 目的地(群组、频道与子 Topic)
TG Migrator 支持将消息投递到:
- 普通群组与超级群组
- 广播频道(Channel)
- 开启了话题(Forum Topics)群组中的 指定子 Topic
场景 A:绑定普通群组或主话题(General)
- 将你的 Bot 拉入目标群组,并授予发消息权限。
- 直接在群内(或默认的
General主话题内)发送/bind。 - Bot 会自动删掉
/bind指令,并在私聊通知你:🎯 已绑定为目的地 #1 我的归档群
场景 B:绑定群组内的「指定子 Topic」(高频重点!)
很多用户发现直接在群里发 /bind 后,消息全都发到了主话题(General)里。这是因为 「在哪个话题里发送 /bind,就会绑定哪个话题」:
- 打开你开启了 Topics 功能的目标群组,先点击进入你想作为目的地的那个子 Topic(子话题)内部(注意不要停留在
# General主话题)。 - 在该子 Topic 的聊天输入框里发送:text
/bind - Bot 会自动从该消息的头部提取该子话题的
topic_id,并为你创建一个专属该子话题的目的地:🎯 已绑定为目的地 #2 我的归档群_t128 (我的归档群 · Topic 128)
同一个群组可以绑定多个子 Topic!
你可以依次点进同一个群的 5 个不同子话题分别发送 /bind,系统会生成 5 个相互独立的目的地(如 归档群_t10、归档群_t25 等)。这样你就可以把不同来源频道的内容,分门别类地搬运到同一个群组的不同子 Topic 中!
场景 C:在私聊中用 /add_tg 手动指定子 Topic ID
如果你不想进群发 /bind,也可以在和 Bot 的私聊窗口直接通过命令添加子 Topic:
- 在目标子话题里随便找一条消息,右键(或长按)选择 复制消息链接(Copy Message Link)。
- 子话题的消息链接格式通常为:
https://t.me/c/1234567890/128/4561234567890→ 对应群组 ID-1001234567890128→ 中间这个数字就是该子话题的 Topic ID456→ 单条消息 ID
- 在与 Bot 的私聊窗口发送:text即可直接将该子话题添加为目的地。
/add_tg -1001234567890 128
场景 D:绑定广播频道或以「匿名管理员」身份绑定
在广播频道(或你开启了群组匿名管理员隐身)中发消息时,Telegram 不会附带你的个人 sender_id。此时请使用一次性绑定码:
- 先在与 Bot 的私聊窗口发送
/bind; - Bot 会返回一个 10 分钟内有效的一次性绑定指令,例如:
• 频道或匿名管理员:在其中发送 /bind 839201(10 分钟内有效) - 复制
/bind 839201发送到目标频道或群组内即可完成绑定。
3. 绑定本地 NAS 目录(/add_local)
本地目的地会将媒体文件和可选的元数据伴生文件保存在容器内 /app/archive(对应宿主机 ./archive 或你挂载的 NAS 路径)下。
- 进入
🎯 目的地→ 点击➕ 本地(或发送/add_local)。 - 输入目的地名称(例如
nas_video)。 - 输入
ARCHIVE_ROOT下的相对子目录名(如telegram/videos),或发送-直接存放在/app/archive根目录。 - 落盘目录结构会自动按源会话和月份归档:
<ARCHIVE_ROOT>/<子目录>/<源频道名称>/<YYYY-MM>/<消息ID>_<原始文件名>
元数据伴生文件(archive.sidecar_format)
每条归档消息旁边可以自动生成记录完整正文、原始时间、发送者与源链接的元数据文件:
json(默认):标准 JSON 结构化元数据md:适合用 Obsidian / Logseq 浏览的.md笔记both:同时生成.json和.mdnone:仅保存媒体文件本身
随时可通过 /set archive.sidecar_format md 切换。
4. 绑定 WebDAV 服务器(/add_webdav)
完美兼容 AList、OpenList、Nextcloud、ownCloud、群晖 WebDAV Server 以及 rclone serve webdav。
- 进入
🎯 目的地→ 点击➕ WebDAV(或发送/add_webdav)。 - 按向导提示依次输入:
- 目的地名称:如
alist_backup - WebDAV 地址:支持公网
https://...以及内网/容器网http://...(如http://alist:5244/dav)。内网地址自动绕过代理(LAN Bypass)
即使你在
.env中配置了全局PROXY_URL,任何指向内网 IP(127.0.0.1、192.168.x.x、10.x.x.x、100.64.x.xTailscale)以及 Docker 内部服务名(如http://alist:5244)的请求都会自动直连,不经过代理。 - 用户名:WebDAV 用户名(匿名填
-)。 - 密码:WebDAV 密码(落库前自动使用 Fernet AES-128 加密存储;若含
_、*、~请用反引号`密码`包裹发送)。 - 服务器子目录:如
OneDrive/TG归档(不存在时会自动逐级创建目录)。
- 目的地名称:如
自动模式(auto)、落盘模式(spool)与零磁盘流式直传(stream)
通过 archive.webdav_mode 控制:
auto(默认):磁盘空间充足时先落盘再上传,空间紧张时自动切换流式。spool(落盘上传):先下载到临时目录downloads/active再上传到 WebDAV,网络波动时最稳。stream(流式直传):从 Telegram 边拉取分片边通过 HTTP PUT 流式写入 WebDAV,全程零磁盘占用,非常适合小硬盘 VPS(通过/set archive.webdav_mode stream开启)。
5. 超大文件(> 2GB / 4GB)自动兜底策略
Telegram 普通账号与 Bot 单文件上传上限为 2,000 MiB(约 2GB),Telegram Premium 会员账号上限为 4,000 MiB(约 4GB)。当源频道存在超过上限的大文件时,有两种处理方式:
- 配置超限备用目的地(推荐): 进入
🎯 目的地→ 点击你的 Telegram 目的地 → 点击🗄 设置超限备用→ 选择一个本地目录或 WebDAV 目的地。这样小于 2GB 的文件照常发往 Telegram 群,超过 2GB 的文件会自动改存到你的 NAS 或 WebDAV,绝不漏存! - 启用 Premium 读取号兜底上传: 如果你登录的读取号开通了 Telegram Premium 会员,且该个人号也在目标群组中有发言权限,只需执行:text遇到 2GB ~ 4GB 之间的文件时,系统会自动临时切换为你的 Premium 个人号完成上传。
/set transfer.allow_premium_user_fallback true