Telegram Web A
该项目在 Telegram 轻量级客户端竞赛 中获得一等奖 🥇,现在已成为官方 Telegram 客户端,任何人都可以在 web.telegram.org/a 使用。
根据原始竞赛规则,它几乎没有依赖项,完全基于自己的 Teact 框架(重新实现了 React 范式)。它还使用了自定义版本的 GramJS 作为 MTProto 实现。
该项目包含许多技术先进的功能、现代 Web API 和技术:WebSocket、Web Worker 和 WebAssembly、多级缓存和 PWA、语音录制和媒体流、密码学和原始二进制数据操作、乐观和渐进式界面、复杂的 CSS/Canvas/SVG 动画、响应式数据流等等。
欢迎探索、提供反馈和贡献。
本地设置
mv .env.example .env
npm i
在 my.telegram.org 获取 API ID 和 API hash,并填入 .env
文件。
开发模式
npm run dev
从控制台调用 API
启动开发服务器并在控制台上下文中找到 GramJS worker。
所有构造函数和函数都可在全局 GramJs
变量中使用。
运行 npm run gramjs:tl full
以访问所有可用的 Telegram 请求。
示例用法:
await invoke(new GramJs.help.GetAppConfig())
Electron
Electron 允许构建可以在 Windows、macOS 和 Linux 上安装的原生应用程序。
NPM 脚本
npm run dev:electron
在开发模式下运行 Electron,同时启动 3 个进程并监视变更:main(主 Electron 进程)、renderer(前端代码)和 Webpack for Electron(将主 Electron 进程从 TypeScript 编译)。
npm run electron:webpack
Electron 的主进程代码(包括预加载功能)使用 TypeScript 编写,并使用 webpack-electron.config.js
配置编译为 JavaScript 代码。
npm run electron:build
准备 renderer(前端代码)构建,编译 Electron 主进程代码,安装和构建原生依赖项,在打包或发布前使用。
npm run electron:staging
在 dist-electron
文件夹中为 macOS、Windows 和 Linux 创建包,APP_ENV
设置为 staging
(允许打开 DevTools,包含源码映射且不压缩构建的 JavaScript 代码),可用于手动分发和测试打包的应用程序。
npm run electron:production
在 dist-electron
文件夹中为 macOS、Windows 和 Linux 创建包,APP_ENV
设置为 production
(禁用 DevTools,压缩构建的 JavaScript 代码),可用于手动分发和测试打包的应用程序。
npm run deploy:electron
在 dist-electron
文件夹中为 macOS、Windows 和 Linux 创建包,并发布版本到 GitHub,支持自动更新。更多信息请参见 GitHub 发布工作流。
MacOS 上的代码签名
要为应用程序签名,请按以下步骤操作:
- 将
/certs
文件夹中的证书安装到钥匙串的login
文件夹中。 - 从 Apple PKI 页面下载并安装
Developer ID - G2
证书。 - 在钥匙串应用程序中,转到与开发者证书关联的私钥。然后执行
key > Get Info > Access Control
。确保您的应用程序(Xcode)在Always allow access by these applications
列表中,并确保Confirm before allowing access
已开启。 - 发布应用程序时,将自动使用钥匙串中有效且适当的身份。
更多信息请参阅官方文档。
MacOS 上的公证
应用程序公证在 electron-builder 模块中自动完成,需要传递 APPLE_ID
和 APPLE_APP_SPECIFIC_PASSWORD
环境变量。
如何获取应用特定密码:
- 登录 appleid.apple.com。
- 在"登录和安全"部分,选择"应用特定密码"。
- 选择"生成应用特定密码"或选择添加按钮,然后按照屏幕上的步骤操作。
GitHub 发布
GitHub 访问令牌
要发布新版本,需要将 GitHub 访问令牌添加到 .env
中。通过访问 https://github.com/settings/tokens/new 生成 GitHub 访问令牌。访问令牌应具有 repo 范围/权限。获得令牌后,将其分配给环境变量:
# .env
GH_TOKEN="{YOUR_TOKEN_HERE}"
发布设置
src/electron/config.yml
配置文件中的发布配置允许设置 GitHub 仓库所有者/名称。
发布工作流程
- 运行
npm run electron:publish
,这将创建新的草稿版本并将构建产物上传到新创建的版本。创建的版本将与package.json
中的版本相同。 - 完成后,发布该版本。GitHub 将标记最新提交。
依赖项
- GramJS (MIT 许可证)
- pako (MIT 许可证)
- cryptography (Apache 许可证 2.0)
- emoji-data (MIT 许可证)
- twemoji-parser (MIT 许可证)
- rlottie (MIT 许可证)
- opus-recorder (多种许可证)
- qr-code-styling (MIT 许可证)
- croppie (MIT 许可证)
- mp4box (BSD-3-Clause 许可证)
- music-metadata-browser (MIT 许可证)
- lowlight (MIT 许可证)
- idb-keyval (Apache 许可证 2.0)
- fasttextweb
- webp-wasm
- fastblur
错误报告和建议
如果您发现此应用程序有任何问题,请使用 建议平台 告知 Telegram。