40 KiB
Telegram Mini Apps Documentation Introduction Telegram Mini Apps позволяют разработчикам создавать высокофункциональные интерфейсы с использованием JavaScript, которые могут быть запущены непосредственно внутри Telegram и потенциально заменить традиционные веб-сайты. Mini Apps поддерживают seamless authorization, платежи через сторонних провайдеров (включая Google Pay и Apple Pay), а также персонализированные push-уведомления и многое другое.
Recent Updates November 17, 2024 - Bot API 8.0 Full-Screen Mode: Mini Apps теперь могут переходить в полноэкранный режим в портретной и ландшафтной ориентации.
Методы: requestFullscreen() exitFullscreen() Поля: safeAreaInset: Объект, представляющий отступы безопасной области устройства, учитывающие системные элементы интерфейса, такие как вырезы или панели навигации. top: Целое число, представляющее отступ сверху в пикселях. bottom: Целое число, представляющее отступ снизу в пикселях. left: Целое число, представляющее отступ слева в пикселях. right: Целое число, представляющее отступ справа в пикселях. contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента внутри приложения, свободную от перекрывающихся элементов интерфейса Telegram. top: Целое число, представляющее отступ сверху в пикселях. bottom: Целое число, представляющее отступ снизу в пикселях. left: Целое число, представляющее отступ слева в пикселях. right: Целое число, представляющее отступ справа в пикселях. isActive: Логическое значение, указывающее, активно ли приложение в данный момент. isFullscreen: Логическое значение, указывающее, находится ли Mini App в настоящее время в полноэкранном режиме. События: activated deactivated safeAreaChanged contentSafeAreaChanged fullscreenChanged fullscreenFailed Homescreen Shortcuts: Mini Apps теперь могут быть добавлены в качестве ярлыков на главный экран мобильных устройств.
Методы: addToHomeScreen() checkHomeScreenStatus([callback]) События: homeScreenAdded homeScreenChecked Emoji Status: Mini Apps теперь могут предлагать пользователям установить статус в виде emoji или запросить доступ для автоматического обновления статуса.
Методы: setEmojiStatus(custom_emoji_id[, params, callback]) requestEmojiStatusAccess([callback]) События: emojiStatusSet emojiStatusFailed emojiStatusAccessRequested Media Sharing and File Downloads: Пользователи теперь могут делиться медиа напрямую из Mini Apps.
Методы: shareMessage(msg_id[, callback]) downloadFile(params[, callback]) События: shareMessageSent shareMessageFailed fileDownloadRequested Geolocation Access: Mini Apps теперь могут запрашивать доступ к геолокации пользователя.
Поле: LocationManager События: locationManagerUpdated locationRequested Device Motion Tracking: Mini Apps теперь могут отслеживать подробные данные о движении устройства.
Поля: isOrientationLocked Accelerometer DeviceOrientation Gyroscope Методы: lockOrientation() unlockOrientation() События: accelerometerStarted accelerometerStopped accelerometerChanged accelerometerFailed deviceOrientationStarted deviceOrientationStopped deviceOrientationChanged deviceOrientationFailed gyroscopeStarted gyroscopeStopped gyroscopeChanged gyroscopeFailed Subscription Plans and Gifts for Telegram Stars: Mini Apps теперь поддерживают платные подписки, работающие на базе Telegram Stars.
Детали: Смотрите документацию Bot API для реализации платных подписок и подарков. Loading Screen Customization: Mini Apps могут настраивать экран загрузки, добавляя свой собственный значок и специфические цвета для светлой и темной темы.
Доступ: Настройки доступны в @BotFather. Hardware-specific Optimizations: Mini Apps, работающие на Android, теперь могут получать базовую информацию о аппаратном обеспечении устройства.
Информация: OS, версии App и SDK, модель устройства и класс производительности. General:
Поле photo_url в классе WebAppUser теперь доступно для всех Mini Apps. Третьи стороны (например, строители Mini App, внешние SDK и т.д.) могут проверять данные, не зная токена бота приложения. Отладка расширена для полной поддержки устройств iOS. Safe Area Inset Описание Поля safeAreaInset и contentSafeAreaInset предоставляют информацию о безопасных областях экрана, чтобы избежать перекрытия с системными элементами интерфейса, такими как вырезы или панели навигации.
Поля top: Целое число, представляющее отступ сверху в пикселях. bottom: Целое число, представляющее отступ снизу в пикселях. left: Целое число, представляющее отступ слева в пикселях. right: Целое число, представляющее отступ справа в пикселях. CSS Variables --tg-safe-area-inset-top --tg-safe-area-inset-bottom --tg-safe-area-inset-left --tg-safe-area-inset-right Additional Information ThemeParams Mini Apps могут адаптировать внешний вид интерфейса в реальном времени в соответствии с настройками темы пользователя.
bg_color: Цвет фона. text_color: Основной цвет текста. hint_color: Цвет подсказок. link_color: Цвет ссылок. button_color: Цвет кнопок. button_text_color: Цвет текста кнопок. secondary_bg_color: Дополнительный цвет фона. header_bg_color: Цвет фона заголовка. bottom_bar_bg_color: Цвет фона нижней панели. accent_text_color: Цвет акцентного текста. section_bg_color: Цвет фона секции. section_header_text_color: Цвет текста заголовка секции. section_separator_color: Цвет разделителя секции. subtitle_text_color: Цвет текста подзаголовка. destructive_text_color: Цвет текста для деструктивных действий. WebAppUser id: Уникальный идентификатор пользователя. is_bot: Логическое значение, указывающее, является ли пользователь ботом. first_name: Имя пользователя. last_name: Фамилия пользователя. username: Имя пользователя в Telegram. language_code: Код языка пользователя. is_premium: Логическое значение, указывающее, является ли пользователь пользователем Telegram Premium. added_to_attachment_menu: Логическое значение, указывающее, добавлен ли бот в меню вложений. allows_write_to_pm: Логическое значение, указывающее, разрешено ли боту отправлять сообщения пользователю. photo_url: URL-адрес профильной фотографии пользователя. Conclusion Обновленная документация предоставляет более полное и детализированное описание функциональности Telegram Mini Apps, включая важные аспекты, такие как safe area inset, ThemeParams и другие. Это должно помочь ИИ-агенту программирования лучше понимать и использовать возможности Telegram Mini Apps.
References Telegram Bot API Documentation Telegram Mini Apps Overview ты исключил все остальное, мне нужна вся информация в одном тексте Понял вас. Давайте объединим всю информацию в одном тексте, чтобы создать полную и структурированную документацию для Telegram Mini Apps.
Telegram Mini Apps: Полная Документация Введение Telegram Mini Apps предоставляют разработчикам возможность создавать гибкие и интерактивные интерфейсы с использованием JavaScript, которые могут быть запущены непосредственно внутри приложения Telegram. Эти приложения могут заменить традиционные веб-сайты, предлагая пользователям возможность взаимодействовать с сервисами без необходимости выхода из мессенджера. Mini Apps поддерживают:
Seamless Authorization: Авторизация без необходимости ввода данных вручную. Payments: Платежи через сторонних провайдеров, включая Google Pay и Apple Pay. Push Notifications: Персонализированные push-уведомления. Custom Interfaces: Пользовательские интерфейсы, которые могут быть адаптированы под нужды пользователя. Основные Возможности
- Full-Screen Mode (Полноэкранный Режим) Mini Apps теперь могут работать в полноэкранном режиме, поддерживая как портретную, так и ландшафтную ориентацию. Это позволяет размещать больше контента, включая игры и медиа в широкоэкранном формате.
Методы: requestFullscreen(): Запрашивает открытие Mini App в полноэкранном режиме. exitFullscreen(): Запрашивает выход из полноэкранного режима. Поля: safeAreaInset: Объект, представляющий отступы безопасной области устройства. top: Целое число, представляющее отступ сверху в пикселях. bottom: Целое число, представляющее отступ снизу в пикселях. left: Целое число, представляющее отступ слева в пикселях. right: Целое число, представляющее отступ справа в пикселях. contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента. top: Целое число, представляющее отступ сверху в пикселях. bottom: Целое число, представляющее отступ снизу в пикселях. left: Целое число, представляющее отступ слева в пикселях. right: Целое число, представляющее отступ справа в пикселях. isActive: Логическое значение, указывающее, активно ли приложение. isFullscreen: Логическое значение, указывающее, находится ли Mini App в полноэкранном режиме. События: activated: Срабатывает, когда Mini App становится активным. deactivated: Срабатывает, когда Mini App становится неактивным. safeAreaChanged: Срабатывает при изменении безопасной области. contentSafeAreaChanged: Срабатывает при изменении безопасной области для контента. fullscreenChanged: Срабатывает при изменении состояния полноэкранного режима. fullscreenFailed: Срабатывает, если запрос на переход в полноэкранный режим не удался. 2. Homescreen Shortcuts (Ярлыки на Главный Экран) Пользователи могут добавлять Mini Apps в качестве ярлыков на главный экран своих устройств для быстрого доступа.
Методы: addToHomeScreen(): Предлагает пользователю добавить Mini App на главный экран. checkHomeScreenStatus([callback]): Проверяет, поддерживается ли функция добавления на главный экран и добавлен ли уже ярлык. События: homeScreenAdded: Срабатывает, когда ярлык успешно добавлен на главный экран. homeScreenChecked: Срабатывает после проверки статуса ярлыка на главном экране. 3. Emoji Status (Статус в Виде Emoji) Mini Apps могут предлагать пользователям установить статус в виде emoji или запросить доступ для автоматического обновления статуса.
Методы: setEmojiStatus(custom_emoji_id[, params, callback]): Открывает диалоговое окно для установки пользователем указанного emoji в качестве статуса. requestEmojiStatusAccess([callback]): Запрашивает разрешение на управление статусом пользователя в виде emoji. События: emojiStatusSet: Срабатывает, когда статус в виде emoji успешно установлен. emojiStatusFailed: Срабатывает, если установка статуса в виде emoji не удалась. emojiStatusAccessRequested: Срабатывает при запросе разрешения на управление статусом в виде emoji. 4. Media Sharing and File Downloads (Обмен Медиа и Загрузка Файлов) Пользователи могут делиться медиа и загружать файлы напрямую из Mini Apps.
Методы: shareMessage(msg_id[, callback]): Открывает диалоговое окно для отправки сообщения, предоставленного ботом. downloadFile(params[, callback]): Открывает нативное всплывающее окно, предлагающее пользователю загрузить файл. События: shareMessageSent: Срабатывает, когда сообщение успешно отправлено. shareMessageFailed: Срабатывает, если отправка сообщения не удалась. fileDownloadRequested: Срабатывает, когда пользователь отвечает на запрос загрузки файла. 5. Geolocation Access (Доступ к Геолокации) Mini Apps могут запрашивать доступ к геолокации пользователя, что позволяет создавать различные сервисы, основанные на местоположении.
Поле: LocationManager: Объект для управления доступом к местоположению. События: locationManagerUpdated: Срабатывает при изменении объекта LocationManager. locationRequested: Срабатывает при запросе данных о местоположении. 6. Device Motion Tracking (Отслеживание Движения Устройства) Mini Apps могут отслеживать данные о движении устройства, что позволяет реализовать более продвинутые инструменты и возможности.
Поля: isOrientationLocked: Логическое значение, указывающее, заблокирована ли ориентация. Accelerometer: Объект для доступа к данным акселерометра. DeviceOrientation: Объект для доступа к данным об ориентации устройства. Gyroscope: Объект для доступа к данным гироскопа. Методы: lockOrientation(): Блокирует ориентацию Mini App в текущем режиме. unlockOrientation(): Разблокирует ориентацию Mini App, позволяя ей изменяться в зависимости от вращения устройства. События: accelerometerStarted: Срабатывает, когда отслеживание акселерометра успешно начато. accelerometerStopped: Срабатывает, когда отслеживание акселерометра остановлено. accelerometerChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные акселерометра. accelerometerFailed: Срабатывает, если запрос на начало отслеживания акселерометра не удался. deviceOrientationStarted: Срабатывает, когда отслеживание ориентации устройства успешно начато. deviceOrientationStopped: Срабатывает, когда отслеживание ориентации устройства остановлено. deviceOrientationChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные об ориентации устройства. deviceOrientationFailed: Срабатывает, если запрос на начало отслеживания ориентации устройства не удался. gyroscopeStarted: Срабатывает, когда отслеживание гироскопа успешно начато. gyroscopeStopped: Срабатывает, когда отслеживание гироскопа остановлено. gyroscopeChanged: Срабатывает с заданной частотой после вызова метода start, отправляя текущие данные гироскопа. gyroscopeFailed: Срабатывает, если запрос на начало отслеживания гироскопа не удался. 7. Subscription Plans and Gifts for Telegram Stars (Платные Подписки и Подарки) Mini Apps теперь поддерживают платные подписки, работающие на базе Telegram Stars, что позволяет разработчикам монетизировать свои приложения с помощью различных уровней контента и функций.
Детали: Смотрите документацию Bot API для реализации платных подписок и подарков. 8. Loading Screen Customization (Настройка Экрана Загрузки) Mini Apps могут настраивать свой экран загрузки, добавляя свой собственный значок и специфические цвета для светлой и темной темы.
Доступ: Настройки доступны в @BotFather. 9. Hardware-specific Optimizations (Оптимизация для Аппаратного Обеспечения) Mini Apps, работающие на Android, могут получать базовую информацию о аппаратном обеспечении устройства, что позволяет оптимизировать пользовательский опыт в зависимости от возможностей устройства.
Информация: OS, версии App и SDK, модель устройства и класс производительности. Дополнительные Возможности Color Schemes (Цветовые Схемы) Mini Apps получают данные о текущей цветовой теме пользователя в реальном времени, что позволяет адаптировать внешний вид интерфейса.
Design Guidelines (Рекомендации по Дизайну) Responsiveness: Все элементы должны быть отзывчивыми и разработанными с учетом мобильного-first подхода. UI Consistency: Интерактивные элементы должны соответствовать стилю, поведению и намерениям существующих компонентов UI. Performance: Все анимации должны быть плавными, желательно 60fps. Accessibility: Все вводы и изображения должны содержать метки для обеспечения доступности. Theme Awareness: Приложение должно обеспечивать бесшовный опыт, отслеживая динамические тематические цвета, предоставляемые API, и используя их соответствующим образом. Safe Area: Убедитесь, что интерфейс приложения учитывает безопасную область и безопасную область контента, чтобы избежать перекрытия с элементами управления, особенно при использовании полноэкранного режима. Device Optimization: Для устройств Android, учитывайте дополнительную информацию в User-Agent и адаптируйтесь к классу производительности устройства, отключая анимации и визуальные эффекты на устройствах с низкой производительностью для обеспечения плавной работы. Реализация Mini Apps Telegram поддерживает семь различных способов запуска Mini Apps:
Main Mini App from Profile Button (Основное Mini App из кнопки профиля) 2. Keyboard Button Mini Apps (Mini Apps из кнопки клавиатуры) Описание: Mini Apps, запускаемые из кнопки клавиатуры типа web_app, могут отправлять данные обратно боту в служебном сообщении с помощью Telegram.WebApp.sendData. Использование: Пользовательские интерфейсы для ввода данных, многоразовые компоненты. 3. Inline Button Mini Apps (Mini Apps из кнопки инлайн) Описание: Для более интерактивных Mini Apps используйте кнопку инлайн типа web_app. Использование: Полноценные веб-сервисы и интеграции. 4. Launching Mini Apps from the Menu Button (Запуск Mini Apps из кнопки меню) Описание: Mini Apps могут быть запущены из настраиваемой кнопки меню. Использование: Быстрый доступ к приложению. 5. Inline Mode Mini Apps (Mini Apps в режиме инлайн) Описание: Mini Apps, запускаемые через кнопку web_app в ответе на инлайн-запрос, могут использоваться в любом месте в режиме инлайн. Использование: Полноценные веб-сервисы и интеграции в режиме инлайн. 6. Direct Link Mini Apps (Mini Apps по прямой ссылке) Описание: Mini App Bots могут быть запущены по прямой ссылке в любом чате. Использование: Полноценные веб-сервисы и интеграции, которые любой пользователь может открыть в один клик. 7. Launching Mini Apps from the Attachment Menu (Запуск Mini Apps из меню вложений) Описание: Mini App Bots могут быть добавлены прямо в меню вложений пользователя, что позволяет быстро запускать их из любого чата. Использование: Быстрый доступ к приложению. Инициализация Mini Apps Для подключения вашего Mini App к клиенту Telegram, поместите скрипт telegram-web-app.js в тег <head> перед любыми другими скриптами:
html
Доступные Поля initData: Строка с необработанными данными, переданными в Mini App. initDataUnsafe: Объект с входными данными, переданными в Mini App. version: Версия Bot API, доступная в Telegram-приложении пользователя. platform: Название платформы Telegram-приложения пользователя. colorScheme: Текущая цветовая схема, используемая в Telegram-приложении. themeParams: Объект, содержащий текущие настройки темы, используемые в Telegram-приложении. isActive: Логическое значение, указывающее, активно ли Mini App в данный момент. isExpanded: Логическое значение, указывающее, развернуто ли Mini App до максимально доступной высоты. viewportHeight: Текущая высота видимой области Mini App. viewportStableHeight: Высота видимой области Mini App в последнем стабильном состоянии. headerColor: Текущий цвет заголовка. backgroundColor: Текущий цвет фона. bottomBarColor: Текущий цвет нижней панели. isClosingConfirmationEnabled: Логическое значение, указывающее, включен ли диалог подтверждения при закрытии Mini App. isVerticalSwipesEnabled: Логическое значение, указывающее, включены ли вертикальные смахивания для закрытия или минимизации Mini App. isFullscreen: Логическое значение, указывающее, находится ли Mini App в настоящее время в полноэкранном режиме. isOrientationLocked: Логическое значение, указывающее, заблокирована ли ориентация Mini App. safeAreaInset: Объект, представляющий отступы безопасной области устройства. contentSafeAreaInset: Объект, представляющий безопасную область для отображения контента. Доступные Методы isVersionAtLeast(version): Возвращает true, если версия приложения пользователя поддерживает Bot API, равную или выше указанной. setHeaderColor(color): Устанавливает цвет заголовка приложения. setBackgroundColor(color): Устанавливает цвет фона приложения. setBottomBarColor(color): Устанавливает цвет нижней панели приложения. enableClosingConfirmation(): Включает диалог подтверждения при закрытии Mini App. disableClosingConfirmation(): Отключает диалог подтверждения при закрытии Mini App. enableVerticalSwipes(): Включает вертикальные смахивания для закрытия или минимизации Mini App. disableVerticalSwipes(): Отключает вертикальные смахивания для закрытия или минимизации Mini App. requestFullscreen(): Запрашивает открытие Mini App в полноэкранном режиме. exitFullscreen(): Запрашивает выход из полноэкранного режима. lockOrientation(): Блокирует ориентацию Mini App в текущем режиме. unlockOrientation(): Разблокирует ориентацию Mini App. addToHomeScreen(): Предлагает пользователю добавить Mini App на главный экран. checkHomeScreenStatus([callback]): Проверяет, поддерживается ли функция добавления на главный экран и добавлен ли уже ярлык. sendData(data): Отправляет данные боту. switchInlineQuery(query[, choose_chat_types]): Вставляет имя бота и указанный инлайн-запрос в поле ввода текущего чата. openLink(url[, options]): Открывает ссылку во внешнем браузере. openTelegramLink(url): Открывает ссылку в приложении Telegram. openInvoice(url[, callback]): Открывает счет с использованием указанной ссылки. shareToStory(media_url[, params]): Открывает нативный редактор историй с указанной медиа. shareMessage(msg_id[, callback]): Открывает диалоговое окно, позволяющее пользователю поделиться сообщением. setEmojiStatus(custom_emoji_id[, params, callback]): Открывает диалоговое окно для установки указанного emoji в качестве статуса. requestEmojiStatusAccess([callback]): Запрашивает разрешение для бота на управление статусом пользователя. downloadFile(params[, callback]): Отображает нативное всплывающее окно, предлагающее пользователю загрузить файл. showPopup(params[, callback]): Отображает нативное всплывающее окно. showAlert(message[, callback]): Отображает сообщение в простом всплывающем окне с кнопкой 'Закрыть'. showConfirm(message[, callback]): Отображает сообщение в простом окне подтверждения с кнопками 'OK' и 'Cancel'. showScanQrPopup(params[, callback]): Отображает нативное всплывающее окно для сканирования QR-кода. closeScanQrPopup(): Закрывает нативное всплывающее окно для сканирования QR-кода. readTextFromClipboard([callback]): Запрашивает текст из буфера обмена. requestWriteAccess([callback]): Запрашивает разрешение для бота на отправку сообщений пользователю. requestContact([callback]): Запрашивает у пользователя его номер телефона. События Mini Apps могут получать события от Telegram-приложения, к которым можно прикрепить обработчик с помощью метода Telegram.WebApp.onEvent(eventType, eventHandler). Внутри eventHandler объект this ссылается на Telegram.WebApp, а набор параметров, передаваемых в обработчик, зависит от типа события.
Список Событий activated: Срабатывает, когда Mini App становится активным. deactivated: Срабатывает, когда Mini App становится неактивным. themeChanged: Срабатывает при изменении настроек темы в Telegram-приложении. viewportChanged: Срабатывает при изменении видимой части Mini App. safeAreaChanged: Срабатывает при изменении отступов безопасной области устройства. contentSafeAreaChanged: Срабатывает при изменении отступов безопасной области для контента. mainButtonClicked: Срабатывает при нажатии на главную кнопку. secondaryButtonClicked: Срабатывает при нажатии на дополнительную кнопку. backButtonClicked: Срабатывает при нажатии на кнопку "Назад". settingsButtonClicked: Срабатывает при нажатии на элемент "Настройки" в контекстном меню. invoiceClosed: Срабатывает при закрытии открытого счета. popupClosed: Срабатывает при закрытии открытого всплывающего окна. qrTextReceived: Срабатывает, когда сканер QR-кода захватывает код с текстовыми данными. scanQrPopupClosed: Срабатывает, когда пользователь закрывает всплывающее окно сканера QR-кода. clipboardTextReceived: Срабатывает при вызове метода readTextFromClipboard. writeAccessRequested: Срабатывает при запросе разрешения на запись. contactRequested: Срабатывает при запросе номера телефона пользователя. biometricManagerUpdated: Срабатывает при изменении объекта BiometricManager. biometricAuthRequested: Срабатывает при запросе биометрической аутентификации. biometricTokenUpdated: Срабатывает при обновлении биометрического токена. fullscreenChanged: Срабатывает при входе или выходе из полноэкранного режима. fullscreenFailed: Срабатывает, если запрос на вход в полноэкранный режим не удался. homeScreenAdded: Срабатывает, когда Mini App успешно добавлен на главный экран. homeScreenChecked: Срабатывает после проверки статуса главного экрана. accelerometerStarted: Срабатывает, когда отслеживание акселерометра успешно начато. accelerometerStopped: Срабатывает, когда отслеживание акселерометра остановлено. accelerometerChanged: Срабатывает с заданной частотой после вызова метода start. accelerometerFailed: Срабатывает, если запрос на начало отслеживания акселерометра не удался. deviceOrientationStarted: Срабатывает, когда отслеживание ориентации устройства успешно начато. deviceOrientationStopped: Срабатывает, когда отслеживание ориентации устройства остановлено. deviceOrientationChanged: Срабатывает с заданной частотой после вызова метода start. gyroscopeStarted: Срабатывает, когда отслеживание гироскопа успешно начато. gyroscopeStopped: Срабатывает, когда отслеживание гироскопа остановлено. gyroscopeChanged: Срабатывает с заданной частотой после вызова метода start. gyroscopeFailed: Срабатывает, если запрос на начало отслеживания гироскопа не удался. locationManagerUpdated: Срабатывает при изменении объекта LocationManager. locationRequested: Срабатывает при запросе данных о местоположении. shareMessageSent: Срабатывает, когда сообщение успешно отправлено. shareMessageFailed: Срабатывает, если отправка сообщения не удалась. emojiStatusSet: Срабатывает, когда статус в виде emoji успешно установлен. emojiStatusFailed: Срабатывает, если установка статуса в виде emoji не удалась. emojiStatusAccessRequested: Срабатывает при запросе разрешения на управление статусом в виде emoji. fileDownloadRequested: Срабатывает, когда пользователь отвечает на запрос загрузки файла. Заключение Telegram Mini Apps предоставляют мощную платформу для разработчиков для создания интерактивных и функциональных приложений внутри экосистемы Telegram. Благодаря обширному API и предоставленным рекомендациям, разработчики могут создавать инновационные решения, которые улучшают пользовательский опыт и вовлеченность.
Ссылки Telegram Bot API Documentation Telegram Mini Apps Overview