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 ./bot
yarn create gramio@latest ./bot
pnpm create gramio@latest ./bot
bun 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 ./miniapp
yarn create @telegram-apps/mini-app@latest ./miniapp
pnpm create @telegram-apps/mini-app@latest ./miniapp
bun 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 mkcert
brew install mkcert
brew install nss # если вы используете Firefox
sudo 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\hosts
sudo 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!