mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-09-06 16:58:55 +08:00
39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# 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 文件均无需迁移或恢复。
|