管理员监听与转存计划
v1.5.7:监听下载恢复与来源提示#
以下增强已随 v1.5.7 发布,旧 v1.5.6 资产不包含;需显式升级匹配的 Bot/CLI,不会自动修改历史失败任务。
- 下载文件分片时,普通 FloodWait 与 PremiumWait 的短等待均在同一分片继续,保留原等待次数/时间上限;取消、身份与权限检查继续有效,不缩短 Telegram 要求的冷却。
- 短等待上限耗尽后,尚未写入远端的普通下载会持久登记冷却时间并释放活动名额。最多两次自动恢复,同时受现有
MAX_RETRIES限制;重启不重置监听任务已消耗的次数。冷却结束后仍需通过账号、来源、磁盘、配额与并发检查。 - 当前分片内的等待不重下已写入内容;重新排队的任务会从头下载,不能将其称为新增字节级断点续传。超过60秒的等待、权限失效或不确定的远端结果继续保守停止。流式任务已有远端现场时不自动重新排队。
- 第一次元数据响应没有附件时,等待1秒后最多复核一次,每次都核对当前账号与来源;仍无附件、附件改变或权限失效就停止。提示改为具体原因,不把附件不可读笼统描述为必须重新登录。
- 诊断报告单列“监听来源或附件不可读”,不再将
source_access混入“其他”。旧失败仍保留原编号、原目录与记录;需要时在现有失败恢复入口核对并确认,不批量自动重试。
无新增环境变量、依赖或数据库 schema 迁移。手动转存原有恢复流程保持兼容;回退前保护完整数据,旧代码仍按旧的限流/重启策略运行,不通过降级或重启绕过限流。
v1.5.5:规则、恢复与历史补拉#
以下增强已随 v1.5.5 发布,现有实例需显式升级;旧 v1.5.4 资产不包含。管理员专属、私聊鉴权和现有转存菜单保持原边界,不增加浏览器服务或监听账号。
看懂规则测试#
来源“测试规则”和草稿最近消息测试继续只读。结果分开显示“筛选规则”和“接收判断”:例如文件实际 32 MB、要求至少 50 MB;或说明命中排除词“广告”。已经保存的文件会注明去重跳过,但仍显示筛选本身是否通过。正常接收的统计原因代码保持原值,避免改提示后历史统计分裂。
排除关键词页面新增“排除匹配范围”,可选择沿用文字范围、文件名、说明或两者。默认继续沿用原范围,只有明确选择才保存 exclude_scope,不会扩大包含条件。排除词按字面子串匹配;“说明末尾有广告合作”等情况可在只读测试中核对,再决定是否调整。
保存和复用规则方案#
打开来源 → 规则方案 → 保存当前已生效规则为方案,填写 1~32 字名称。每个管理员最多保存 8 个方案。选择方案后勾选 1~8 个来源,查看旧/新规则,再确认应用;命名、保存目录、来源启停和自动/确认模式保留。所选任一来源或方案已变化时整批拒绝,不会只改前几个。已有来源的规则历史继续保留,可通过原历史预览恢复;删除方案不撤销已应用规则。
方案保存在当前实例业务数据库已有的 service_meta 中,只包含筛选配置,不包含 Telegram Session 或网关凭据;两个 Edition 各用自己的数据库。没有业务 schema 升级。回退旧程序前先备份;旧代码不能识别显式设置的 exclude_scope,应通过本版本把排除范围改为沿用文字范围并移除该可选字段,或使用匹配的一致性备份,不删表或重新建库。
小批恢复监听失败#
来源 → 失败恢复,每页最多 5 项,逐项查看任务和固定脱敏原因。对可恢复的下载失败,先预览再确认恢复一项或本页;一次最多 5 项、整批核验最多 30 秒,遇到授权、读取或网络问题停止后续核验。恢复沿用原任务编号、原文件与目录记录,重新核验监听身份和实际附件,继续经过配额、磁盘和调度限制。
只对尚无远端提交记录的网络/服务端/限速下载失败,及可核验的旧版下载重试耗尽记录提供此快捷恢复。取消中、远端文件不确定、上传或验证失败需在原任务详情单独核对;不会自动删除或覆盖远端文件,也不会批量创建相同任务。来源和账号需处于启用状态且冷却结束。恢复不是跨进程的字节级断点续传。
等待摘要与目录预览#
来源详情显示视频保存预览:来源分类模式按实际绑定显示 Bot 保存目录/来源名称/视频,旧模式按目录别名、命名目录或当前分类顺序解析。它是相对 Bot 保存目录的路径,不假定已知道网关账号的网盘绝对根目录。预览不迁移旧文件,修改目录仍走原确认流程。
任务和来源详情增加本次进程最近 64 个任务的短限速等待次数、累计约等待时间与当前等待状态;重启后内存摘要重置,持久化账号冷却继续保留。等待日志最多按任务每分钟提示一次,并在本次下载结束时汇总;等待结束不等于转存完成,最终以任务状态和远端大小复验为准。
手动、受控历史补拉#
来源需启用。来源 → 历史补拉 → 选择最近 1、6 或 24 小时,先只读扫描。每次最多检查 100 条消息、20 秒;达到上限或超时会明确标记未完整,不宣称扫完所有历史。保留来源和账号核验,按当前规则、命名与安全媒体组说明计算候选,继续跳过重复文件和已经处理的事件。
预览列出已检查数、符合数和跳过原因;每次确认最多原子登记前 5 个待确认计划,余下可重新预览。即使来源平时自动转存,本功能仍需到原待确认列表核对名称和目录并确认;最终提交再次核验实际附件。它不推进或回退正常监听游标,不清空缺口标记,不自动重处理被旧规则跳过的事件,不改变正常重启最多 6 小时的补拉窗口。
预览和按钮 5 分钟过期;规则、来源身份、连接或保存根目录变化后必须重新预览。计划数、接收记录数、权限和原有队列保护继续有效。模拟检查不等于 Telegram/CloudDrive2/OpenList 实机验收,新增交互及长时间运行仍待新版本发布后验证。
v1.5.4:监听下载限速恢复#
以下修复已随 v1.5.4 发布。现有实例需显式升级,文档更新不会自动修改正在运行的 Bot;修复后的实机回归仍需单独验收。
- Telegram 的
FLOOD_PREMIUM_WAIT是下载限速等待,与普通FloodWaitError是不同的异常;遇到短等待不应按网络故障反复重下整部视频,也不表示来源没有读取权限。 - 新代码只在已核验的监听下载中,按 Telegram 指定秒数等待后重试同一文件分片;保留 Telethon 原有的文件引用、数据中心和 CDN 处理、现有流式背压及最终大小复验。每个分片最多等待 5 次,累计不超过 60 秒;超限或普通 FloodWait 继续持久化账号冷却并停止当前任务,供管理员核对后手动重试,不无限循环。
- 等待可取消;每次恢复先复核管理员、个人账号、客户端和任务取消状态。账号冷却时暂停放行新的监听任务,普通 Bot 手动任务仍使用自己的账号与队列;并发冷却不会被较短等待覆盖。冷却结束后,状态恢复“正常监听”。
- 失败详情保留安全分类及最后一次原因,下载日志不再拼接原始外部异常。历史失败记录不会自动改成成功或批量重新执行;新版发布并升级后,在任务详情核对,再对选定任务使用原有重试按钮或
/retry <任务编号>。 - 这是当前进程内继续同一分片,不是新增跨重启的字节级断点续传。进程退出、普通网络失败或流式中断仍遵循原恢复规则;不自动删除远端不完整文件,也不绕过 Telegram 服务端限速或权限限制。
临时错误与并发退让#
- 获取来源权限、消息元数据或下载附件时,临时 Telegram 服务端错误、连接失败和超时进入原有的有界重试;错误分类和详情明确标记 Telegram 来源,不误报为网关权限或存储异常。权限被拒绝、授权失效、消息被删或附件改变仍安全停止。
- 所有异步错误在写入账号或来源状态前复核发起请求的个人账号和客户端。旧连接迟到的授权/权限错误不能停用、断开或暂停后来生效的账号和来源。
- 监听下载遇到限速时,新增任务的并发额度先减半,最低 1;同一时间多条反馈不会反复减半,持续限速最多每 30 秒降低一次。连续 60 秒没有新限速后,每 60 秒恢复 1 个名额,始终受原资源窗口、磁盘、配额和流式上传名额限制。
- 降低额度只影响新的监听任务放行,不取消已在运行的传输,也不更改手动转存的共享资源窗口。等待原因在原任务信息中显示;不增加新菜单、后台计时服务或配置项。并发退让保留在当前进程中,重启继续从原资源窗口的保守初值开始,账号的持久化冷却仍然有效。
- 普通和流式传输重试耗尽后均保留最后一次脱敏原因与类别,供任务详情和故障排查使用;保留远端不确定结果的人工核对规则,不自动覆盖或删除不完整文件。
本次没有数据库迁移、新配置项或依赖升级,Bot Session 与个人监听 Session 保持隔离。自动回归采用真实 Telethon 下载迭代器配合离线发送器,以及两网关的模拟普通/流式流程;修复后的真实 Telegram 下载、两网关实机与长期运行尚未验收。
v1.5.3 起,全新安装使用 data/tg2cloud.db;已有实例若只有 data/tg115.db,继续使用原文件,保留任务、授权和恢复记录,不自动改名或创建空库。若两个文件并存会停止并要求核对,不自动合并。备份/隔离恢复识别两种文件名,但每份实例只能有一个业务数据库。不要手动移动正在使用的 SQLite 文件或删除旁文件。
本页对应正式版 v1.5.2;需显式升级 Bot 与离线工具后使用,旧版本不包含这些功能。真实 Telegram 登录、两网关转存和 VPS 恢复安排在发布后验收,自动化通过不替代实机结论。
v1.4.10 已发布:新增 Linux“16. 监听管理”、手机号/验证码回显及 Bot 按钮草稿表单;需显式升级 Bot 与对应管理工具才会生效。基础监听能力自 v1.4.9 提供。
v1.5.0 维护#
规则测试与正式监听使用一致的媒体组说明关联方式,只复用本次读取批次中同来源、同媒体组的文字,附件自身说明和原名中的集数优先。页面不完整时,不会为预览额外拉取整个相册;预览仍然只读,未找到的组说明不会被猜测。
来源暂停、删除或配置修改会使旧轮询结果失效,后续从持久化进度与新配置继续核验;已登记计划继续使用原快照。下载前会重新核对个人监听账号及连接,账号切换或附件复核失败后不会沿用上一次核验结果。
监听登录从在线菜单调用时可使用当前 SSH 控制终端,即使父脚本的标准输入被重定向也能交互;手机号和验证码可见,2FA 仍隐藏。没有可用控制终端时明确停止。此修复及 Bot/CLI 分别验收的升级提示已随 v1.5.0 发布,旧 v1.4.11 资产保持原样;真实功能仍需实机验收。
v1.4.11:来源目录与访问处理#
本节变更已随 v1.4.11 正式版发布,须显式升级 Bot 后生效。下文同时保留 v1.4.9/v1.4.10 的功能引入时间,目录与访问策略以本节为准。
每个监听来源单独归档#
新添加频道/群组时,程序在当前 Bot 保存目录下创建来源目录。安装时保存子目录留空,就是 WebDAV 账号根目录;填过子目录,则继续放在该子目录内,不绕到账号根目录。目录始终来自真实配置,没有固定的网盘路径。
Bot 保存目录/
├── 视频/ # 原手动转存:仅在原分类设置启用时存在
├── 图片/
├── 城市旅行/ # 监听频道,添加时创建
│ ├── 视频/ # 相应附件首次上传时按需创建
│ └── 图片/
└── 学习交流/ # 监听群组
├── 视频/
└── 文档/监听分类固定使用视频、图片、音频、文档、压缩包、其他文件,与手动转存的分类开关及年月分类互不影响。分类不改变筛选规则:新来源仍暂停、仅视频、确认后转存。需要图片等类型时,先通过筛选表单添加相应类型并保存,再启用来源;添加前的旧消息不会因此自动补抓。
来源目录名去除 Emoji、不可见控制符及危险路径字符,保留多语言文字和数字,最多相当于 30 个全宽汉字(60 显示列,ASCII 通常占一列)。同时限制 UTF-8 字节数,给类型子目录留出空间。不同来源清理后同名时加入来源编号,编号也计入长度;全表情名称改用来源标识。已绑定的目录不随频道改名而变化,删除来源后也不删除云端目录或释放其名称给另一个来源;重新添加相同来源继续使用原绑定。
创建目录只调用现有 rclone mkdir,不覆盖文件、不清空已有目录。如果云端本来就存在同名目录,mkdir 会复用它,不宣称该目录中的历史内容归 TG2Cloud 独占管理。请在来源详情核对相对路径。
已有监听来源保持原目录。需要采用新布局时,打开来源的 保存目录 → 来源名称下按类型保存 → 保存修改。切换后来源暂停,创建并检查目录后,由管理员明确启用。选择已有目录别名或“沿用默认设置”可改回旧目录规则;这也是显式保存,只影响未来计划,不移动历史文件。来源分类模式优先于来源命名方案中的目录覆盖;待确认计划仍可人工选择已授权别名,仅改变该计划。
创建失败会保留暂停的来源记录,详情显示“目录创建未完成”和 重试创建目录,不需要反复添加来源。启用前重新检查目录;失败不回退到其他保存位置。Bot 保存根目录改变时,已有来源绑定停止使用,需核对并恢复原配置,不会自动扩大访问范围。已经登记的计划和已入队任务继续保留接收时冻结的目录。
保护标记与真实访问权限#
监听不再仅凭来源/消息的保护标记拒绝添加、匹配或下载。个人账号已加入、实际可读取的附件,通过原筛选和资源检查后进入既有转存流程。未知保护标记也不替代真实成员权限核验。
这不等于解除 Telegram 的服务端限制:没有加入、没有读取权限、Session 失效、附件被删或改变时仍停止;Telegram 实际拒绝读取时暂停来源,停止任务的自动下载重试,管理员核对后再恢复。使用同一已授权个人账号的正常 API,不自动加入、不切换账号、不抓评论,也不保证任何受限附件一定可下载。普通 Bot 手动转存保持原流程。
更明确的反馈与返回入口#
添加失败分别提示来源无效/失效、未加入或无权限、授权失效、限流等待秒数、网络超时、数据库无法保存;不显示底层异常、手机号、Token 或 Session。输入失败仍保留取消按钮与重填机会,目录创建失败则返回已登记的来源卡片。
“转存设置”管理员按钮为三行双列,最后一行是“目录别名管理”“返回系统状态”;家庭成员保留返回入口,不显示管理员功能。“监听管理”在启停及添加按钮下方显示“返回系统状态”,来源列表继续排在它下方,空来源列表也能返回。
升级与验证范围#
本次不增加环境变量、依赖、服务或数据库 DDL,业务 schema 仍为 3。目录策略、名称和根目录绑定保存在现有来源 JSON 配置中;旧记录缺少这些字段时按旧目录规则读取,不重建数据库或 Session。回退时使用匹配的旧程序和升级前一致性数据库备份,不让旧代码直接解释含新目录策略的当前数据库。停用/删除监听来源不会清理云端目录。
自动测试使用临时 SQLite、模拟 Telegram/WebDAV,覆盖目录限长与隔离、目录创建失败、普通/流式两后端、真实 API 拒绝的模拟及按钮交互。本版真实 Telegram、用户网关及 VPS 验收仍待发布后执行;GitHub CI/原生 Docker 结果在发布验收记录中单独追加。 发布后应在专用测试实例依次核对:
- 原有手动转存及已有监听来源仍保存到原路径。
- 新来源先暂停,实际创建清理后的名称目录,默认仅视频、确认后转存。
- 明确开启图片等类型后,新附件分别进入来源下对应分类;切换手动分类不影响它。
- 同名来源、安全截断和重启后路径稳定;不移动或删除已有文件。
- 网关不可写时来源暂停、可重试;恢复后明确启用。
- 添加无权限/失效来源得到对应提示;保护标记不单独拦截,实际 API 拒绝仍安全停止。
- 两 Edition 分别测试普通/流式、待确认目录冻结和返回状态按钮。
先了解边界#
监听是可选的个人 Telegram 账号组件,默认关闭;现有 Bot 私聊发送/转发文件仍自动转存。普通家庭成员看不到监听管理,也不能通过命令、按钮、交互文本或任务编号使用监听身份。安装仍只填写一个管理员 ID,没有增加必填环境变量、网站、端口、代理或运行依赖。
只处理个人账号已经加入且有权访问的频道/群组。保护标记不再单独拦截;实际成员权限或 Telegram 读取拒绝仍会停止,不自动加入、不绕过限制、不读取评论、不识别分享链接、不回填完整历史,不自动重处理已经登记的消息编辑。监听账号和 Bot 各用一份 Session;任何手动任务失败都不会借用个人账号。
终端登录、检查和停用#
v1.4.10 管理工具可运行 tg2cloud,选择当前 Edition → 16. 监听管理,再选“登录监听账号”“查看监听状态”或“停用监听功能”;自动沿用已核验的实例目录。下列原命令继续兼容,正式 v1.4.9 也可使用:
tg2cloud listen login --edition clouddrive2
tg2cloud listen status --edition clouddrive2
tg2cloud listen disable --edition clouddrive2OpenList 将 clouddrive2 换成 openlist。自定义实例加 --install-dir /自己的已核验安装目录,不能指向另一 Edition。主机入口核验平台、本机 Docker daemon、容器归属和已有数据挂载,再在该 Bot 容器中执行授权,不重启 Bot 或网关。
源码入口为:
python3 -B scripts/run_source.py listen --help帮助只用标准库。实际登录需要已运行且含本功能代码的容器。v1.4.10 中手机号、验证码在当前终端可见,仅两步验证密码隐藏;正式 v1.4.9 的三项仍隐藏。输入均不进入程序日志,不能发给 Bot,不能作为命令行参数。登录结果必须是原个人账号;拒绝 Bot Token 和切换到另一个账号。成功后仍是停用状态,在 Bot 中明确启用。
Session 位于现有实例 data/listener/personal.session,不替换 data/bot.session。目录须归容器用户 UID 10001、权限 700,Session 为 600;单独文件锁防止两个进程同时写入。重新登录先停用组件并等待释放锁,保留来源和任务。不要将 Session 当日志上传。
在 Bot 中添加来源#
- 管理员私聊 Bot,点击“监听管理”或发送
/listen。 - 确认账号已登录,点击“启用监听账号”,等待连接;失效时按终端登录步骤重新授权。
- 点击“添加来源”,输入已加入来源的
@用户名、稳定聊天 ID 或链接。私有邀请只核验已加入状态,不自动加入。核验成员读取权限后登记为暂停来源,创建来源目录,默认“仅视频、确认后转存”。 - 打开来源详情,设置筛选规则、命名方案、目录与自动/确认模式;点击“测试规则”只读预览最近最多 10 条,不创建任务、不改游标、不预留额度。
- 点击“启用”。首次及重新启用均从当前时点开始;暂停期间的历史不自动补抓。账号启用与来源启用是两项独立开关。
添加来源、修改规则期间发送附件,仍按原转存入口处理,不会被设置交互吞掉。列表的多项内容须放在同一条消息中分行发送;成功后 Bot 回复更新后的设置页面,不再继续等待本次输入,返回编辑后明确保存才生效。输入错误可重新填写,原草稿保留。文本设置按用户隔离、5 分钟超时,可 /cancelinput 取消;按钮一次性使用且 5 分钟失效,重启后须重新打开。
来源详情显示收到、附件、匹配、跳过、待确认、入队与分原因统计。删除来源需要二次确认,停止新接收并忽略其尚未提交计划,保留来源身份历史、已入队任务和云端文件;重新添加同一来源复用历史身份,新计划从当前时点开始。
筛选规则#
下次版本的默认规则(尚未发布):新添加的频道/群组仅匹配视频,排除“广告、内部群、搜索引擎”,文件最小 50 MB(50 × 1024² 字节),无大小上限,匹配文件名和说明。正好 50 MB 可匹配;任一排除词命中即跳过。只影响新添加来源,已有来源的规则保留;仍可在表单修改或清空排除词、将最小值设为 0,保存后生效。新来源仍暂停、确认后转存。
以下为 v1.4.10 按钮表单。打开来源 →“筛选规则”,界面显示当前值,修改先进入草稿;保存修改才生效,取消返回保留原配置。连续 5 分钟无操作后草稿过期,重启 Bot 也会丢弃未保存草稿。旧版 v1.4.9 不具备本节表单,须先升级。
| 按钮 | 如何填写 |
|---|---|
| 媒体类型 | 多选视频、图片、音频、文档、压缩包或其他文件;不限类型仍须有其他条件。 |
| 文件后缀 | 添加/替换/删除后缀;每行一个,也可输入 mp4, mkv,忽略大小写和前导点。 |
| 包含关键词 | 每行一个,可添加、替换、删一项或清空;每组最多 20 项,每项最多 100 字。选择“任意一个”或“全部包含”。 |
| 排除关键词 | 每行一个;命中任意排除词即跳过,适用于所有条件组。 |
| 文件名条件 | 针对原始文件名,选择包含文字、完全相同或通配匹配;通配仅支持 *、?。 |
| 文件大小 | 分别设置最小和最大;例如 100 MB、1.5 GB,按 1024 换算,纯数字按 MB,0 表示不限。 |
| 匹配范围 | 点击选择文件名、说明文字或两者;保持 Unicode 多语言匹配。 |
| 组合条件 | 同一组的不同条件全部满足,不同组满足任一组即可;最多 8 组。 |
| 测试规则 | 修改样例文件名、说明、媒体类型和大小,测试当前草稿;也可测试真实来源最近最多 10 条消息。 |
例如:第 1 组选择“视频”并填写关键词“物理”;第 2 组填写后缀“pdf”和关键词“讲义”。结果是“物理视频 或 PDF 讲义”;两组都受排除词和大小限制。类型判断结合 Telegram 媒体属性和 MIME,不把所有文档都当普通文档。
空条件不会默认为全部接收。确实需要所有附件时,在组合条件中点击“接收全部附件”并确认,保存后生效;排除词、大小和来源读取权限仍有效;实际 API 拒绝不会被绕过。无效规则不会退回全部匹配。
来源详情用中文摘要显示规则和接收计数,长列表注明项目数量,完整内容在对应字段中查看。筛选使用原始文件名和实际说明;不读取评论,人工改名不改变先前的匹配事实。
离线样例只检查填写的元数据,不代表真实来源权限通过;最近消息测试还会核对来源访问和重复记录。两种测试均不下载、不创建任务、不扣额度、不推进接收游标,也不会自动保存草稿。
命名与目录#
v1.4.10 表单中,来源点击“命名方案”,个人手动转存打开“转存设置”→“命名设置”。三种方式仍复用同一命名实现:
- 兼容命名:默认保留有意义的原名;数字、随机或污染名称沿用说明识别和安全兜底。
- 说明标题优先:保留成员原有季集/章节;与原名冲突时保留兼容结果,不猜顺序。
- 字段模板:点击增减标题、季数、集数、章节、年份、分辨率、语言、版本等字段;也可选择填写自定义模板。缺项省略,不编造事实,不调用 AI 或 OCR。
“清理前缀”“清理后缀”逐行管理需要移除的文字,不是自动给文件添加文字;“标题标记”可设置说明中的标题起点。使用“预览命名”修改样例、查看候选文件名及依据;预览不上传。恢复默认方案需确认,最后仍须保存。所有方案保留真实扩展名和已有重名保护。
城市漫游 第2季 第03集 可生成 城市漫游 S02E03.mp4。每个成员自己的讲次仍保留,公共说明仅从同一已获取媒体组安全复用,成员逐个筛选,最多额外读取 10 个同页边界成员。极晚到达或独立转发失去说明的成员仍可能回退旧命名。
管理员在“转存设置”→“目录别名管理”点击新增,分别填写别名、Bot 上传根目录内的相对路径,并点选已授权家人;不选成员表示仅管理员可选。已有别名保持名称,仅调整路径或授权,防止来源引用悄悄失效。保存时复核目录列表是否发生并发修改。
来源的“保存目录”可选择来源名称下按类型保存,也可选择已授权目录别名;命名方案和待确认任务、批次目录继续用已授权别名按钮。来源选择“沿用默认设置”仅取消来源覆盖,继续按命名方案、分类和默认目录依次确定。
v1.4.11 优先级:本次人工选择 > 启用的来源目录分类 > 来源目录别名 > 命名方案目录 > 现有分类 > 默认目录。来源目录分类与别名模式二选一。目录选择替换分类子目录,不重复追加;接收时冻结最终目录、命名和规则快照,已入队任务不因设置修改而换目录。授权撤销或 Bot 基目录变化时拒绝不安全提交,不自动扩大范围。
“命名规则历史与撤销”先展示当前与拟恢复的筛选、命名、目录和转存模式,确认后才恢复完整来源配置,只影响新计划。来源修订变化、按钮重复点击、越权或过期均会拒绝写入。
审批、批次和修正反馈#
手动默认仍自动入队;开启确认模式后,发送附件先收到待确认卡片。监听每个来源独立选择自动或确认后转存。/pending 按本人分页,每页 10 项,每人最多 200 项,7 天过期;确认前不下载、不预留额度。
卡片可确认、仅本次改名、选择授权目录、忽略;进入正式队列后冻结。媒体扩展名沿用原结果,危险路径字符被拒绝/清理。批次最多 20 项,可确认、改共同主题、改目录,保留各成员集数、章节和扩展名;逐项核验版本与额度,部分失败仍保留对应待确认记录,务必核对结果。
人工修正仅在本人记录保存,最多 2000 条、30 天,不自动训练模型或污染全局规则。明确、可验证的固定前缀修正,管理员可在“修正记录”点击“确认保存前缀规则”,只影响该来源未来计划。其他修改仅留本次记录。来源“命名规则历史与撤销”保留最近 20 次完整配置,可恢复;命名方案可点击“恢复默认方案”,确认后保存。规则保存不回头改任务或云端文件。
恢复、限流和容量边界#
使用个人客户端有界轮询接收新消息,每轮每来源最多 100 条,媒体组分页最多扩展 10 条;检查周期 5 秒。仅补拉最近 6 小时;超过窗口可能漏档,管理员需自行核对,不承诺完整历史或端到端 exactly-once。实时接收与重启使用同一持久化收件键,未来即使乱序送达,也不以最大 ID 代替逐条登记。
来源接收结果、计划或跳过决定落盘后才推进游标。计划入队和现有配额预留同一事务;重复审批/重复事件不会重复执行。后续重名后缀以任务结果为准,预览不保留远端名称。
待处理队列达到 100 项或接收记录达到 20000 条时延后监听接收,保持游标,不静默丢弃;手动任务在同一现有分页中优先。收件明细通常保留 7 天,仍待确认引用除外;计划终态保留 30 天。账号停用或冷却时,尚未下载的监听任务保留排队,手动任务继续;网络/接收受限时来源冷却至少 60 秒,轮询及下载的 FloodWait 都按 Telegram 指定时间持久化冷却;授权失效停用账号,成员权限或实际附件读取拒绝时暂停来源,不刷屏、不借其他身份。普通 Bot 不随监听停用。
已入队任务仍使用原有并发、磁盘预算、配额、取消、验证及 CloudDrive2/OpenList 各自的提交与恢复策略。消息被删除、附件改变、权限撤销或授权失效时停止自动下载重试,管理员核对后手动重试。流式中断重试是重新开始,不是新增字节级续传。
升级、备份与回退#
已核对原 v1.4.8、v1.4.9 与 v1.4.10 正式提交并补充可信升级载荷基线,不仅凭版本文本接受未知代码。v1.4.9 增加读取身份、来源、计划与反馈,并将业务 schema 2 事务迁移至 schema 3,不删除旧任务;历史任务默认 bot 身份,原名称和目录保持不变。v1.4.10/v1.4.11 不新增迁移,旧 schema 2 用户升级时仍须经过已有事务迁移。无新增必填环境变量、Bot 运行依赖或 Compose 服务。
升级前按备份指南保存匹配的程序/镜像、配置和 data/tg2cloud.db 一致性快照。个人 Session 是额外敏感文件:停用监听、等待释放后再备份 data/listener/personal.session;离线实例快照包会将存在的该 Session 纳入完整性清单,拒绝活跃 SQLite 旁文件。现有升级不删除监听目录,原数据库备份包含新增表;数据库快照不等于已备份 Session。
回退必须还原旧程序和匹配的升级前数据库快照,不让旧代码打开 schema 3,不删表降级;先停用监听及 Bot,避免两套实例同时处理任务。不要覆盖尚未验证的可用数据。实际生产恢复和真实授权未在本轮执行。
待执行的真实验收#
用专用测试账号与明确隔离的来源,分别在 AMD64/ARM64、CloudDrive2/OpenList 验收登录与 2FA、私有来源、退出/撤权、内容保护、媒体组延迟、FloodWait、断网重连、重启补拉、真实下载/上传及手动任务并行。确认普通成员的命令、伪造回调及任务编号无法越权。检查 Session 权限和私密备份;不得用生产云端删除做测试。
v1.4.9 已按辅助 A、入口 B、同标签原生双架构和实际资产校验流程发布。两个入口固定已验证 A,业务仅使用正式稳定 Release;发布后由用户完成真实 VPS 验收。
设计参考 Reelay 的来源配置与审批流程(MIT,Copyright 2026 Derrors),未复制其源码或增加运行依赖。Telegram 接口遵循 Telethon 1.45 文档;不承诺超出实际权限的能力。
完整版本与发布后验收步骤见仓库验收记录。
v1.5.1:监听调度与维护优化#
以下改动已随 v1.5.1 发布,升级后生效,不需要新增配置:
- 监听继续串行请求。单个来源的一次轮询设 30 秒超时;超时后保留已登记消息与进度,来源冷却 60 秒,不停用整个监听账号。
- 每处理完一个来源检查本轮 30 秒时间预算,用完后从下一个来源继续;轮次之间仍等待 5 秒。预算在来源之间检查,不会把刚开始处理的来源挤成极短超时,也不承诺所有频道每 5 秒都能检查一次。
- 限流仍作用于整个监听账号;权限失效、暂停、来源修改或账号切换继续检查。超时任务先取消并等待结束,不遗留后台请求,不并行放大 Telegram 请求量。
- 历史清理启动时执行,之后每 60 秒到期检查,遇到正在处理的轮次会顺延。创建计划仅过期当前用户的待确认记录;查看、修改、确认仍实时检查有效期,不会因延迟清理而允许提交过期计划。
- 保留原 7 天接收明细、30 天终态计划等范围以及仍待确认引用的保护。历史清理统一事务提交,失败回滚并稍后重试,不因清理失败撤销 Telegram 登录。
这些检查使用隔离数据库和模拟 Telegram 验证;真实频道延迟、网络超时和长时间运行仍待发布后的实机验收。手动转存、网关配置与云端文件清理规则不变。
待发布:连接恢复与分批维护#
以下修复已随 v1.5.2 发布;需显式升级 Bot 与管理工具,v1.5.1 实例不因文档更新自动获得修复。标题保留以兼容旧链接。
- 监听首次连接/重连遇到临时网络错误、超时或 Telegram 服务器错误时,保留启用状态,按 5、10、20、40、80、160、300 秒退避重试,之后间隔上限为 300 秒;连接与身份查询总计设置 30 秒超时。账号状态显示重试等待,不反复发送通知。
- 授权失效、个人身份不匹配、Session 缺失或权限异常仍停止监听;需要在
tg2cloud的监听管理中核对并重新启用。手动停用和新授权状态优先于旧连接结果。Telegram FloodWait 仍按服务端要求冷却,不用网络重试缩短它。 - 网络恢复沿用已有游标和最多 6 小时补拉窗口;长时间离线可能有缺口,不承诺全历史补抓。普通 Bot 手动转存及原 Session 保持原有行为。
- 历史维护每次对过期计划、监听事件、命名修正记录、已结束计划分别最多处理 500 条;达到批次上限时最早下一轮(5 秒后)继续,平时每 60 秒检查。原保留期限、待确认和引用保护不变,每个批次仍在一个事务中完成,失败完整回滚。
- schema 保持 3;启动时幂等补充三个查询索引,不改表字段、任务或 Session。首次在大数据库上创建索引可能增加启动时间,升级前仍须保留一致性备份。回到同 schema 3 的旧代码不需要删除这些索引;若需恢复到升级前的数据状态,应停机后恢复匹配代码与一致性备份,不能让两个实例同时处理同一数据库。限量的是变更行数,不是严格的毫秒级执行时限。