Этот проект получил первый приз? на конкурсе облегченных клиентов Telegram и теперь является официальным клиентом Telegram, доступным каждому на web.telegram.org/a.
Согласно первоначальным правилам конкурса, он практически не имеет зависимостей и полностью основан на собственной структуре Teact (которая повторно реализует парадигму React). Он также использует специальную версию GramJS в качестве реализации MTProto.
Проект включает в себя множество технологически продвинутых функций, современные веб-API и методы: WebSockets, Web Workers и WebAssembly, многоуровневое кэширование и PWA, запись голоса и потоковую передачу мультимедиа, криптографию и операции с необработанными двоичными данными, оптимистичные и прогрессивные интерфейсы, сложный CSS/ Анимация Canvas/SVG, реактивные потоки данных и многое другое.
Не стесняйтесь исследовать, оставлять отзывы и вносить свой вклад.
mv .env.example .env
npm i
Получите идентификатор API и хеш API на my.telegram.org и заполните файл .env
.
npm run dev
Запустите свой сервер разработки и найдите работника GramJS в контексте консоли.
Все конструкторы и функции доступны в глобальной переменной GramJs
.
Запустите npm run gramjs:tl full
, чтобы получить доступ ко всем доступным запросам Telegram.
Пример использования:
await invoke ( new GramJs . help . GetAppConfig ( ) )
Electron позволяет создать собственное приложение, которое можно установить в Windows, macOS и Linux.
npm run dev:electron
Запускаем Electron в режиме разработки, одновременно запускаем 3 процесса с отслеживанием изменений: main (основной процесс Electron), рендерер (код FE) и Webpack для Electron (компилирует основной процесс Electron из TypeScript).
npm run electron:webpack
Основной код процесса Electron, включающий функцию предварительной загрузки, написан на TypeScript и компилируется с использованием конфигурации webpack-electron.config.js
для генерации кода JavaScript.
npm run electron:build
Подготовка сборки рендерера (кода FE), компиляция основного кода процесса Electron, установка и сборка собственных зависимостей, которые используются перед упаковкой или публикацией.
npm run electron:staging
Создавайте пакеты для macOS, Windows и Linux в папках dist-electron
с APP_ENV
в качестве staging
(позволяет открывать DevTools, включает исходные карты и не минимизирует встроенный код JavaScript), можно использовать для ручного распространения и тестирования упакованного приложения.
npm run electron:production
Создавайте пакеты для macOS, Windows и Linux в папках dist-electron
с APP_ENV
в качестве production
(отключенные DevTools, минимизированный встроенный код JavaScript), которые можно использовать для ручного распространения и тестирования упакованного приложения.
npm run deploy:electron
Создавайте пакеты для macOS, Windows и Linux в папке dist-electron
и публикуйте выпуск на GitHub, что позволяет поддерживать автоматические обновления. Дополнительную информацию см. в разделе Рабочий процесс выпуска GitHub.
Чтобы подписать код вашего приложения, выполните следующие действия:
/certs
в папку login
в вашу связку ключей.Developer ID - G2
со страницы Apple PKI.key > Get Info > Access Control
. Там внизу убедитесь, что ваше приложение (Xcode) находится в списке Always allow access by these applications
и убедитесь, Confirm before allowing access
включен.Подробная информация в официальной документации.
Нотариальное заверение приложения выполняется автоматически в модуле электронного сборки, для которого требуется передать переменные среды APPLE_ID
и APPLE_APP_SPECIFIC_PASSWORD
.
Как получить пароль для конкретного приложения:
Чтобы опубликовать новый выпуск, вам необходимо добавить токен доступа GitHub в .env
. Создайте токен доступа GitHub, перейдя по адресу https://github.com/settings/tokens/new. Токен доступа должен иметь область/разрешение репозитория. Получив токен, назначьте его переменной среды:
# .env
GH_TOKEN="{YOUR_TOKEN_HERE}"
Конфигурация публикации в файле конфигурации src/electron/config.yml
позволяет установить владельца/имя репозитория GitHub.
npm run electron:publish
, который создаст новый черновой выпуск и загрузит артефакты сборки в новый выпуск. Версия созданного релиза будет такой же, как в package.json
.Если вы обнаружите проблему с этим приложением, сообщите об этом Telegram с помощью платформы предложений.