Установка
Добавление зависимости
Добавьте крейт в 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
Дальше
- Быстрый старт — инициализация SDK и первая кнопка
- Интеграция с фреймворками — подключение Leptos или Yew
- Мок и тестирование — запуск вне Telegram при разработке