WTelegram Layer 兼容性¶
适用范围:使用 WTelegramClient 4.4.8(Telegram Layer 228)的面板版本。
背景¶
Telegram 可能向部分既有会话返回相邻 Layer 的对象构造器。Issue #162 中的
user#31774388 和 channel#1c32b11c 属于 Layer 227;Layer 228 的 WTelegram
类型表默认只登记 user#b1b8cc83 与 channel#d49f34c6,因此会抛出
Cannot find type for ctor。
实现约束¶
TelegramLayerCompatibility 在 Web 启动入口执行,并由客户端池再次兜底,向
TL.Layer.Table 注册两条别名:
0x31774388映射到当前TL.User;0x1C32B11C映射到当前TL.Channel。
这两个 Layer 的字段顺序一致,Layer 228 只在尾部新增受 flag 保护的可选字段,因此旧负载
可以由当前类型安全读取。不得将未知构造器、非相邻 Layer 或字段布局未经核对的构造器加入
该表;也不得为此降级 WTelegramClient。
启动入口在任何账号导入、登录、Session 转换和导出等直接创建 Telegram 客户端的路径前完成注册。 注册仅修改进程内类型表,不修改数据库、账号配置或 Session 文件。
验收与排查¶
升级并重启后,使用曾出现该错误的账号重新运行数据同步。成功判据是频道/群组读取完成,
日志和任务失败详情中不再出现这两个构造器的 Cannot find type for ctor。
若仍出现其他构造器编号,保留完整编号、WTelegram 版本和触发接口后反馈,不要泛化注册别名。
若同时出现 AUTH_KEY_UNREGISTERED、SESSION_REVOKED 等明确 Session 错误,按账号重新登录流程
处理,而不是将其视为 Layer 兼容问题。
回滚¶
回滚到不含该兼容层的应用版本只会移除进程内别名;数据库和 Session 文件均无需迁移或恢复。