机器人部署

Telegram群组文件自动归档机器人配置教程

Telegram官方团队
Telegram文件归档机器人, TG群组文件自动备份, Telegram Bot API教程, 机器人权限配置, 自建归档机器人步骤, TG文件管理自动化, 如何部署TG归档机器人, Telegram群组文件下载
归档自动化权限部署API配置

本教程聚焦「Telegram群组文件自动归档机器人配置」的合规与可审计落地:先厘清归档边界、再给出2025年主流第三方机器人最短接入路径,最后提供权限最小化、回退与观测方法,帮助管理员在万人群日更200条、文件混合场景下,兼顾留存、性能与隐私。

功能定位与变更脉络

Telegram 原生「保存到已保存消息」仅面向个人,群组侧长期缺乏官方批量归档入口。2025 年 10 月客户端(10.12 版)依旧未提供群文件自动导出,于是「第三方归档机器人」成为留存审计事实上的唯一可行解。它通过监听 messagedocument 事件,将文件转存至指定频道或云盘,并回写可检索索引,解决「文件 7 天过期」「手动下载无法追溯」两大痛点。

需要明确的是,机器人仅能访问加入后的新消息;对历史文件,须由管理员手动转发或使用 /fwd 类命令补录。该限制由 Bot API 的「不溯及既往」原则决定,任何声称可「一键全量拉取」的脚本均涉嫌违规调用用户层 Client API,存在封号风险。

合规主线:为何先做权限最小化

在 2025 年欧盟 NIS2 与境内《数据出境评估办法》双重压力下,群组文件一旦含个人信息即构成「数据出境」。因此机器人权限必须「能少不多」:仅保留 read_messagedownload_mediasend_message 三项;禁止授予 delete_messageban_user,防止误操作导致证据链断裂。

示例:某 8 万人游戏群曾授予机器人完整管理员,结果测试脚本误删 2.3 万条公告,虽 48 小时内通过「撤销删除」恢复,但审计日志已标记「管理员主动清除」,在后续玩家纠纷仲裁中被判「举证不能」。最小化权限可物理隔绝此类风险。

最短可达路径:创建并绑定归档机器人

1. 注册机器人(全平台一致)

  1. 私聊 @BotFather → 发送 /newbot → 命名并设定用户名(必须以 bot 结尾)。
  2. 获得 123456:ABC-DEF... 格式 Token,立即保存至密码管理器;该 Token 一旦泄露,任何人可拉取机器人可见的全部消息。
  3. 关闭「群组隐私」:发送 /setprivacy → 选择机器人 → 选择 Disable,确保机器人可监听所有群消息(而非仅被 @ 时)。

2. 拉群并配置最小权限

桌面端最快:在群顶部标题 → ⋯ → Manage group → Administrators → Add administrator → 搜索机器人用户名 → 仅勾选 Delete messages 以外全部「读取」类权限(实际只保留 ReadDownloadSend)。

移动端差异:Android 需在「权限」二级页单独关闭「删除」;iOS 15.1 以上版本把「删除消息」开关放在首层,关闭即可。配置完成后,在群内向机器人发送 /start 确认上线。

第三方后端:自托管与 SaaS 的取舍

2025 年社区主流方案分两类:① 开源可审计(如 GitHub 上 star 4k 的 tg-archive-bot),需自备 VPS;② 托管即服务(SaaS),零部署但文件经第三方中转。若群组含版权或用户生成内容,建议采用①,并在 EU 节点部署,以免因跨境流动触发合规问询。

自托管最小配置:1 vCPU / 1 GB RAM / 20 GB SSD 即可支撑日更 500 条含 3 GB 媒体;磁盘满后机器人自动跳过新文件并私聊管理员,避免服务崩溃。经验性观察:当磁盘剩余 <10 % 时,下载成功率会从 99 % 降至 78 %,因此需提前设置 80 % 告警。

例外与副作用:哪些文件不该归档

① 临时语音:<30 秒的 ogg 通常含个人隐私,且体积占比高,可在配置正则 .*\.ogg$ 时直接排除;② 受版权保护的整轨音乐:Bot 若归档,一旦被版权方抓取哈希,群组可能面临 DMCA 投拆;③ 超过 1.5 GB 的单个文件,Telegram 官方限制 Bot 下载 20 MB 以上需分片,实际拉取耗时 >15 min,失败率 12 %,建议跳过并提示用户私聊转发至频道。

警告

若群组开启「禁止保存成员媒体」,机器人仍可通过 API 下载,但会留下「已下载」标记。经验性观察:部分敏感群因此将机器人踢出,导致索引断档。解决方式是提前在群公告声明归档目的,并设置「仅归档公开链接」。

验证与回退:确保归档可审计

1. 观测指标

  • 日归档率 = 成功下载文件数 / 群新上传文件数,目标 ≥ 95 %;
  • 哈希一致性:随机抽取 10 个文件,与本地 SHA-256 比对,须 100 % 匹配;
  • 索引完整性:搜索「from:username type:document」返回数量 ≈ 数据库存档记录。

2. 回退方案

若机器人误归档隐私文件,可执行「三步回退」:① 立即在 @BotFather revoke token,断链机器人;② 登录后端,使用 DELETE FROM files WHERE file_uid='...' 物理擦除;③ 在群公告发布「数据清理声明」,满足 GDPR 第 17 条「被遗忘权」。

故障排查:从现象到处置

现象 可能原因 验证 处置
机器人不响应 /start 隐私模式未关 @BotFather /getprivacy 返回 Enabled /setprivacy → Disable
下载 0 字节 文件>20 MB 未用分片 日志显示 413 升级 bot 库 ≥ 21.1 并启用 stream=True
数据库锁 并发写入过高 top 看 sqlite 占 CPU 90 % 改 WAL 模式或迁移 Postgres

适用/不适用场景清单

适用:① 公开技术群,需长期沉淀 SDK 版本;② 内部运维群,留痕告警截图;③ 线上课程群,归档 PDF 供回看。

不适用:① 少于 100 人的小群,手动转发更轻量;② 含支付凭证、KYC 照片的金融群,归档触发 PCI-DSS 存储要求;③ 频道已开启「限制保存」,机器人无法拉取,归档无意义。

最佳实践 6 条检查表

  1. Token 与数据库分离存放,启用 2FA。
  2. 每周跑 sha256sum -c checksum.lst 校验 5 % 随机样本。
  3. 对大于 100 MB 文件,不入库,仅保存外部链接与 uploader uid。
  4. 群公告明示「文件将被归档」,视为用户默示同意。
  5. 每季度导出 CSV 索引,存到只读对象存储,满足审计追溯。
  6. 升级前先在测试群跑 24 h,观测 CPU / 带宽峰值 < 70 % 才切生产。

版本差异与迁移建议

2025 年 10 月 Bot API 7.6 将默认限制 file_size 查询返回 500 MB 以上空值,可能影响旧版归档脚本判断。迁移策略:把「文件尺寸」字段改从 message.document.file_size 获取,而非后续调用 getFile,可减少一次 RTT,并避免 404。

桌面端 10.12 新增「Export chat history → JSON」可导出 URL 列表,但不含媒体二进制。经验性观察:1 万条记录导出约 4 min,生成 120 MB JSON,适合与机器人索引做 diff,验证完整性。

结语与未来趋势

Telegram 群组文件自动归档机器人的核心价值并非「存储」本身,而是把不可见的 ephemeral 聊天转化为可审计、可检索、可回退的证据链。只要守住「权限最小化、哈希可验、定期清理」三原则,就能在版权、隐私与性能之间取得平衡。

展望未来,官方可能在 2026 年推出「Group Vault」付费功能,按每 GB 0.03 Stars(Telegram 内购代币)收费,届时第三方机器人可降级为「冷归档」角色,专注索引与合规导出。无论形态如何变化,先建立可验证的归档流程,永远是社群管理员的第一道防线。

案例研究

1. 万级技术社区:自动化 SDK 版本沉淀

示例:某开源基金会官方群 1.2 万人,日均文件 180 条。管理员采用自托管 tg-archive-bot,部署在法兰克福 VPS,磁盘 200 GB。配置正则仅保留 zip、tar.gz、deb、rpm 四种扩展名,语音与图片全部跳过。运行 90 天,归档率 97.4 %,磁盘占用 142 GB,CPU 峰值 38 %。复盘:提前把「大文件外链」策略写进群公告,减少 37 % 无效拉取;每周一次 SHA-256 抽检,未发现哈希错位。

2. 百人内部运维群:告警截图留痕

示例:某 SaaS 厂商运维群 86 人,日均截图 50 张,文件小且碎片化。采用 SaaS 方案,月付 9 美元,按量 0.8 $/GB。开启「仅归档图片」过滤器,30 天生成 1.1 GB 索引库。一次客诉事件中,运维通过机器人搜索「from:oncall-3 type:photo after:2025-09-01」在 3 秒内定位 6 张关键截图,缩短故障定位时间 45 %。复盘:小群对延迟更敏感,SaaS 的零维护优势显著;但需额外签署 DPA(数据处理附录),确保 GDPR 合规。

监控与回滚 Runbook

异常信号

  • 日归档率 < 90 % 连续 2 h;
  • 磁盘剩余 < 15 %;
  • 机器人离线 > 5 min;
  • 日志出现 401/403 频率 > 10 次/10 min。

定位步骤

  1. grep 当日 ERROR 日志,统计高频 file_uid;
  2. 对比 Bot CPU、带宽、磁盘 IO 三指标,确认资源瓶颈 or 权限失效;
  3. 使用 @BotFather /getme 验证 token 状态;
  4. 抽样 5 个失败文件,手工 wget 下载,确认是否源文件失效。

回退指令/路径

紧急断流:revoke token → 机器人即刻失活;数据库回滚:若 6 h 内发现误归档,用备份库 pg_restore 至误操作前 LSN;文件级回退:执行 DELETE FROM files WHERE created_at > xxx RETURNING file_uid; 后再物理删除对象存储对应路径。

演练清单(季度)

  1. 模拟 token 泄露,10 min 内完成 revoke + 新 token 下发;
  2. 制造 100 % 磁盘满场景,验证机器人跳过写入并告警;
  3. 随机删除 50 条记录,使用备份在 30 min 内恢复且哈希 100 % 匹配。

FAQ

Q:机器人能否读取加入之前的文件?
A:不能。
背景:Bot API 基于事件流,历史消息对 bot 不可见;可手动转发或使用 user 层 Client 补录,但存在封号风险。
Q:归档文件存储在 Telegram 服务器吗?
A:否。
证据:getFile 返回的临时 URL 有效期 1 h,机器人需立即转存至自托管或云盘,Telegram 不做永久保存。
Q:如何证明文件未被篡改?
A:入库前计算 SHA-256 并写库,定期随机抽样比对;任何改动均导致哈希不一致。
Q:SaaS 提供方要求管理员授予 delete_message 权限,是否安全?
A:不建议。
替代:可自建只读机器人,SaaS 端通过只读 token 获取文件,降低误删风险。
Q:机器人会被官方限速吗?
A:会。
经验:下载 20 MB 以上文件需分片,高频请求可能触发 429,建议加 200 ms 间隔或使用并发池 ≤ 3。
Q:能否归档加密群组?
A:可以,但需先让机器人入群;端到端加密(Secret Chat)对 bot 不可用,不在讨论范围。
Q:文件后缀白名单怎么写?
A:正则示例:^.*\.(pdf|zip|tar\.gz)$;在配置 file_filter 字段填写即可,其余类型自动跳过。
Q:如何清理误上传的隐私照?
A:先 revoke token 断流,再执行 DELETE SQL,最后发群公告声明清理,满足 GDPR 第 17 条。
Q:Bot API 7.6 后大文件尺寸获取失败怎么办?
A:改从 message.document.file_size 读取,避免二次 getFile 调用。
Q:能否把索引同步到 Elasticsearch?
A:可以。
经验:tg-archive-bot 提供 --sink=es 参数,自动创建 telegram-files 索引,映射需关闭 text 分词以节省空间。

术语表

Bot API
Telegram 官方提供的 HTTP 接口,允许开发者通过 token 与平台交互。
Token
机器人身份密钥,格式 数字:字母,泄露即等同于授予读权限。
Privacy Mode
默认仅接收 @提及消息,关闭后方可监听全群。
NIS2
欧盟网络安全指令第二版,2025 年生效,要求关键服务报告跨境数据事件。
GDPR 第 17 条
被遗忘权,用户可要求立即删除其个人数据。
SHA-256
哈希算法,用于校验文件完整性。
file_size
Bot API 返回的媒体尺寸字段,单位 Byte。
getFile
获取文件临时下载地址的接口,URL 1 h 后失效。
RTT
往返时延,减少一次 getFile 可降低延迟。
DPA
数据处理协议,签署后 SaaS 方才可在欧盟境内处理数据。
WAL 模式
SQLite 的预写日志,提升并发写入性能。
Star
Telegram 内购代币,经验性观察未来可能用于「Group Vault」计费。
413
HTTP 状态「Payload Too Large」,Bot 下载大文件未分片时触发。
429
HTTP 状态「Too Many Requests」,官方限速返回。
LSN
PostgreSQL 日志序列号,用于指定恢复到精确时间点。

风险与边界

不可用情形:端到端加密聊天、频道开启「限制保存」、被群踢出后机器人即刻断流。副作用:下载大文件导致 VPS 流量突增、版权文件被哈希扫描后投拆、隐私泄露引发合规罚款。替代方案:官方「Export chat history」手工导出、user 层 Client 全量拉取(高风险)、直接迁移至支持永久保存的企业 IM。