Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Установка

Добавление зависимости

Добавьте крейт в Cargo.toml:

[dependencies]
telegram-webapp-sdk = "0.11"

Включение флагов фич

Крейт поставляется без включённых фич (default = []), поэтому вы явно подключаете только нужное:

telegram-webapp-sdk = { version = "0.11", features = ["macros", "yew", "leptos", "mock"] }
ФичаНазначение
macrosМакросы telegram_app!, telegram_page! и telegram_router!
yewХук контекста, реактивные хуки и компоненты системных кнопок для Yew
leptosПровайдер контекста, реактивные хуки и компоненты системных кнопок для Leptos
mockНастраиваемый мок Telegram.WebApp для локальной разработки
fullСокращение для macros + yew + leptos + mock

Обычно включают один фреймворк плюс mock:

# Приложение на Leptos с поддержкой локального мока
telegram-webapp-sdk = { version = "0.11", features = ["leptos", "mock"] }

Минимальная поддерживаемая версия Rust

MSRV — Rust 1.96 (edition 2024). Более старые тулчейны не поддерживаются.

rustup update stable
rustc --version   # должно быть >= 1.96

Цель сборки — браузер

Telegram Mini Apps исполняются как WebAssembly во встроенном браузере Telegram, поэтому собирайте под цель wasm32-unknown-unknown:

rustup target add wasm32-unknown-unknown

Сборка через Trunk или wasm-pack

Используйте WASM-бандлер, чтобы получить итоговый .wasm, JS-обвязку и index.html.

Trunk (рекомендуется для целых приложений — его использует демо):

cargo install trunk
trunk serve   # dev-сервер с автоперезагрузкой
trunk build --release

Минимальный index.html для Trunk подключает скрипт Telegram и ваш крейт:

<!doctype html>
<html>
  <head>
    <script src="https://telegram.org/js/telegram-web-app.js"></script>
    <link data-trunk rel="rust" />
  </head>
  <body></body>
</html>

wasm-pack (для библиотек или интеграции, управляемой из JS):

cargo install wasm-pack
wasm-pack build --target web

Дальше