Telegram Mini Apps (Web app)
🚧 Это руководство в процессе разработки 🚧
Данное руководство поможет вам начать разработку Telegram Mini Apps.
Для более подробного руководства рекомендуем обратиться к Telegram apps (tma.js).
Дополнительные ресурсы:
Создание проекта с помощью create-gramio
create-gramio — это мощный инструмент для создания проектов Telegram Mini App. Он поддерживает различные конфигурации проектов и легко интегрируется с GramIO.
Вы можете быстро настроить:
- Отдельный Telegram бот
- Монорепозиторий с Mini App + Bot
- Полноценный монорепозиторий с Mini App + Bot + Elysia (бэкенд фреймворк)
Примечание: Этот вариант доступен только с bun (альтернатива среде выполнения Node.js) из-за требований фреймворка Elysia
Установка
Выберите предпочитаемый менеджер пакетов:
npm create gramio@latest ./botyarn create gramio@latest ./botpnpm create gramio@latest ./botbun create gramio@latest ./botПараметры настройки проекта
При запуске команды установки вы пройдете через ряд подсказок:
Выбор типа проекта:
- Bot (отдельный бот)
- Mini App + Bot + Elysia (фреймворк для бэкенда) монорепозиторий
- Mini App + Bot монорепозиторий
Для проектов с монорепозиторием:
- Вам будет предложено выбрать шаблон Mini App из опций
@telegram-apps/create-mini-app - Если выбрана опция Elysia, вы также настроите бэкенд на Elysia
- Вам будет предложено выбрать шаблон Mini App из опций
Конфигурация фреймворка для бота:
- Выберите предпочитаемую базу данных (без БД, Prisma, Drizzle)
- Выберите инструменты разработки (ESLint, Biome)
- Настройте дополнительные функции (i18n, Redis, аналитика PostHog и т.д.)
Структура монорепозитория
Когда вы создаете проект с монорепозиторием, структура вашего каталога будет выглядеть так:
├── apps
│ ├── bot # Ваше приложение бота GramIO
│ ├── mini-app # Фронтенд Telegram Mini App
│ └── server # Серверная часть (если используется опция Elysia)
└── packages
└── db # Общий пакет базы данных (если выбран)Использование Telegram apps (tma.js) напрямую
В качестве альтернативы вы можете создать только часть Mini App с помощью @telegram-apps/create-mini-app:
npm create @telegram-apps/mini-app@latest ./miniappyarn create @telegram-apps/mini-app@latest ./miniapppnpm create @telegram-apps/mini-app@latest ./miniappbun create @telegram-apps/mini-app@latest ./miniappЭта команда поможет вам создать проект с шаблоном из следующих вариантов:
WARNING
На данный момент поддержка монорепозитория в create-gramio может быть не идеальной (не самой удобной из коробки), поскольку сложно поддерживать эти два варианта создания одновременно.
HTTPS на localhost
BotFather принимает только ссылки http:// для продакшена, но для получения вашего приложения в тестовой среде требуется HTTPS. Вот как настроить HTTPS на localhost:
- Сначала установите mkcert:
choco install mkcert
# или с помощью Scoop
scoop bucket add extras
scoop install mkcertbrew install mkcert
brew install nss # если вы используете Firefoxsudo apt install libnss3-tools
brew install mkcert- Создайте локальный сертификат для вашего пользовательского имени хоста и установите его:
mkcert mini-app.local
mkcert --install- Добавьте пользовательское имя хоста в файл hosts:
echo "127.0.0.1 mini-app.local" >> C:\Windows\System32\drivers\etc\hostssudo echo "127.0.0.1 mini-app.local" >> /etc/hosts- Настройте его в
vite.config.ts:
import fs from "node:fs";
import { defineConfig } from "vite";
export default defineConfig({
server: {
port: 443,
host: "0.0.0.0",
hmr: {
host: "mini-app.local",
port: 443,
},
https: {
key: fs.readFileSync("./mini-app.local-key.pem"),
cert: fs.readFileSync("./mini-app.local.pem"),
},
},
});🔥 Теперь вам не нужны никакие туннели, и вы можете с удовольствием разрабатывать с HMR в производственной среде Telegram!
