Telegram Post Editor — Mini App
Создавайте красиво отформатированные посты Telegram прямо внутри Telegram. Точное превью, черновики, синхронизируемые через Telegram CloudStorage, и публикация одним нажатием — каждый элемент форматирования (жирный, курсив, ссылки, цитаты) сохраняется.
Mini App — лёгкий компаньон для десктопного Telegram Post Editor. Тот же движок форматирования, то же превью, но доступно с любого устройства, где есть Telegram.
Как открыть
Mini App живёт внутри @tgpe_editor_bot — откройте бота в Telegram и отправьте /app, чтобы запустить Mini App. Работает на iOS, Android, Telegram Desktop и Telegram Web.
После нажатия Start отправьте /app, чтобы
запустить Mini App.
Два способа запуска
- Открыть бота — нажмите @tgpe_editor_bot, нажмите Start, затем отправьте
/app - Меню команд бота —
/start(приветствие),/help(полный список функций),/app(запуск Mini App)
Нажмите /start перед первой загрузкой медиа
Telegram требует, чтобы у бота был открытый чат с вами — иначе он не сможет временно сохранить загруженный файл. Если пропустить /start, первая загрузка фото или аудио завершится ошибкой «Tap Start in @tgpe_editor_bot first, then try again.» Откройте чат с ботом, нажмите Start и повторите попытку.
Первый запуск
При открытии Mini App вы увидите приветственный экран с вашим именем из Telegram, короткий слоган и ссылку «Получить Telegram Post Editor для десктопа» в правом верхнем углу.
Тема и язык — автоматически
- Тема — берётся из
Telegram.WebApp.themeParamsи переносится в CSS-переменные. Переключите тему в Telegram — Mini App обновится мгновенно. - Язык — определяется по
language_codeиз Telegram. Русский дляru*, английский — в остальных случаях. Сейчас поддерживаются только английский и русский. - Безопасные отступы — учитывается челка / Dynamic Island на iOS.
Раскладка
| Размер экрана | Раскладка |
|---|---|
| Узкий (< 768px) | Две вкладки: Редактор / Превью. Состояние редактора сохраняется при переключении. |
| Широкий (≥ 768px) | Бок о бок: редактор слева (60%), превью справа (40%). |
Форматирование
Тулбар поддерживает те типы форматирования, которые Telegram действительно отображает.
| Кнопка | Действие | Сочетание |
|---|---|---|
| B | Жирный | Cmd/Ctrl + B |
| I | Курсив | Cmd/Ctrl + I |
| U | Подчёркнутый | Cmd/Ctrl + U |
| S | Зачёркнутый | — |
| Ссылка | Вставка / переключение ссылки | Cmd/Ctrl + K |
| Фото | Выбор фото или видео | (файловый пикер) |
| Аудио | Выбор аудиофайла | (файловый пикер) |
| ⋯ Ещё | Списки, цитата, блок кода, удалить ссылку, очистить форматирование | — |
Поддерживаемые узлы: жирный, курсив, подчёркнутый, зачёркнутый, ссылка, абзац, заголовок, нумерованный и маркированный списки, цитата, блок кода.
Отличия от десктопа: нет галереи в тулбаре (отдельные кнопки «Фото» и «Аудио»), нет управления каналами, упрощённый диалог ссылки, пока нет UI для спойлера и пикера эмодзи.
Сочетания клавиш
| Сочетание | Действие |
|---|---|
| Cmd/Ctrl + B | Жирный |
| Cmd/Ctrl + I | Курсив |
| Cmd/Ctrl + U | Подчёркнутый |
| Cmd/Ctrl + K | Диалог ссылки |
| Enter | Новая строка |
| Escape | Закрыть модалку / отменить переименование |
| Tab | Переход по фокусу |
| Space | Активация выбранной кнопки |
Медиа
Нажмите Фото или Аудио — откроется системный пикер.
Лимиты
| Тип | Форматы | Максимальный размер |
|---|---|---|
| Фото | JPEG, PNG, WebP, GIF | 10 МБ |
| Видео | MP4, MOV, WebM | 50 МБ |
| Аудио | MP3, M4A, AAC | 50 МБ |
Сейчас — один медиафайл на пост. Повторный выбор заменяет предыдущий. Альбомы в планах.
Процесс загрузки
- Выбираете файл — сразу появляется локальный 256-пиксельный thumbnail
- Mini App в фоне загружает файл боту, в слоте крутится спиннер
- Бот возвращает
file_idи серверный thumbnail - В слоте отображается финальное превью; основная кнопка переключается на «Поделиться в Telegram»
- Временные ошибки автоматически повторяются до трёх раз с экспоненциальной задержкой (500 мс → 1 с → 2 с + jitter)
Особенности платформ
| Платформа | Пикер | Заметка |
|---|---|---|
| iOS | Document picker (Фото / Файлы / iCloud) | blob:-URL работают надёжно |
| Android | Системный файловый пикер | blob:-URL ненадёжны в WebView — используются data:-URL и серверный thumbnail-fallback при сбое createImageBitmap |
| Telegram Desktop | Системное диалоговое окно | Наследует тему десктопа |
| Telegram Web | HTML5-инпут | Только localStorage / IndexedDB — без CloudStorage-синхронизации |
Превью и лимиты длины
Превью показывает Telegram-стилизованный пузырёк с отформатированным текстом плюс прикреплённое медиа (если есть) и опциональную карточку предпросмотра ссылки.
Пороги длины
| Режим | Максимум символов |
|---|---|
| Только текст | 4096 |
| С медиа (подпись) | 1024 |
Счётчик символов обновляется с задержкой 120 мс (дружелюбно к Android). Цвет меняется на 80%, 95% и 100%: синий → жёлтый → красный, и жирный красный после превышения. При прикреплении/удалении медиа режим подписи переключается автоматически.
Публикация
Большая кнопка внизу — триггер публикации. Активна, когда пост содержит хотя бы один символ или прикреплённое медиа; недоступна во время загрузки или при превышении лимита.
Современный Telegram (Bot API ≥ 8.0)
- Нажмите «Поделиться в Telegram»
- Mini App дожидается завершения загрузки и просит бэкенд подготовить инлайн-сообщение
- Бэкенд формирует сообщение и возвращает
prepared_message_id, действительный ~5 минут - Mini App вызывает
Telegram.WebApp.shareMessage(prepared_message_id) - Telegram открывает системный шеринг — выберите чат или канал
- Telegram отправляет сообщение; Mini App показывает «Опубликовано! Сообщение в пути.»
Старый Telegram (без shareMessage)
Кнопка переключается на «Скопировать как MarkdownV2». Mini App сериализует пост в Telegram-Markdown, копирует в буфер обмена и показывает тост: «Скопировано! Вставьте в любой чат Telegram.»
Метка «via @bot»
Mini App публикует через инлайн-механизм Telegram, поэтому в постах канала появляется подпись «via @tgpe_editor_bot». Чтобы публиковать от имени канала без метки, используйте десктопное приложение с ботом, добавленным как администратор канала (право Post Messages).
Черновики
Автосохранение
Каждое нажатие клавиши (с дебаунсом) сохраняет:
localStorage.tgpe:current— локальный кэш для восстановления- Telegram CloudStorage под id активного черновика (если CloudStorage доступен)
При перезагрузке Mini App восстанавливает в порядке: активный черновик из CloudStorage → бэкап в localStorage → пустой редактор.
Экран черновиков
Иконка папки в шапке открывает список черновиков: заголовок, дата изменения, превью первой строки. Нажмите, чтобы открыть, карандаш — чтобы переименовать (до 60 символов; Enter — сохранить, Esc — отменить), корзина — чтобы удалить (с подтверждением).
Лимиты хранилища
| Хранилище | Лимит |
|---|---|
localStorage | ~5–10 МБ (браузер) — около 50 КБ на черновик |
| Telegram CloudStorage | 1024 ключа на пользователя (ограничение Telegram) — каждый черновик = один ключ |
Оффлайн
Черновики работают полностью оффлайн — изменения сохраняются локально. Публикация требует соединения и показывает «Не удалось связаться с сервером.» до восстановления связи.
CloudStorage недоступен
В Telegram Web и очень старых клиентах CloudStorage не поддерживается. Mini App покажет баннер — черновики сохраняются локально, но не синхронизируются между устройствами.
Публикация в каналы
Управление каналами — в десктопном приложении. Mini App опирается на системный шеринг Telegram, который позволяет выбрать любой чат или канал, где у вас есть права на публикацию.
Для чистых постов в канал без метки «via @tgpe_editor_bot» используйте десктопное приложение с ботом, добавленным как администратор канала с правом Post Messages.
Ошибки и пустые состояния
Ошибки загрузки
| Ошибка | Сообщение | Действие |
|---|---|---|
| Пустой файл | «Файл пустой.» | Выберите другой |
| Слишком большой | «Файл слишком большой. Лимит N МБ.» | Сожмите и попробуйте ещё раз |
| Неподдерживаемый MIME | «Этот тип файла не поддерживается.» | Используйте фото / видео / аудио |
| Чат с ботом недоступен | «Tap Start in @tgpe_editor_bot first, then try again.» | Откройте чат с ботом, нажмите Start |
| Сеть / 5xx | (автоматически 3 попытки, затем «Загрузка не удалась») | Подождите или повторите вручную |
Ошибки публикации
| Код | Сообщение |
|---|---|
| empty_post | Напишите что-нибудь перед отправкой. |
| too_long | Пост слишком длинный. Telegram допускает до 4096 символов. |
| invalid_state | Что-то не так с этим черновиком. Скопируйте текст вручную. |
| telegram_api | У Telegram временные проблемы. Попробуйте ещё раз. |
| auth_required / auth_invalid | Не удалось аутентифицироваться. Перезапустите Mini App. |
| network_error | Не удалось связаться с сервером. Проверьте соединение. |
| unsupported | Обновите Telegram, чтобы публиковать напрямую. Или используйте «Скопировать как MarkdownV2». |
Решение проблем
| Проблема | Решение |
|---|---|
| «Mini App is not running in Telegram» | Откройте @tgpe_editor_bot изнутри Telegram и отправьте /app |
| Черновики не синхронизируются между устройствами | CloudStorage недоступен в этом клиенте (Web / старый клиент). Используйте десктопное приложение для синхронизации. |
| При загрузке медиа: «Tap Start in @bot first» | Откройте чат с ботом, нажмите Start, затем повторите загрузку |
| На Android фото пустые | Сработает серверный thumbnail-fallback. Если нет — пришлите лог консоли в поддержку. |
| «Пост слишком длинный» при < 4096 символов | Прикреплено медиа — лимит подписи 1024. Удалите медиа или сократите подпись. |
| Не могу найти чат в шеринг-листе | Введите имя чата в поиск шеринг-листа Telegram. |
| Метка «via @bot» в постах канала | Это ожидаемое поведение Mini App. Для постов от имени канала используйте десктопное приложение с ботом-админом. |
FAQ
Где работает Mini App?
Внутри Telegram на iOS, Android, Telegram Desktop (macOS/Windows/Linux) и Telegram Web. Откройте @tgpe_editor_bot и отправьте /app, чтобы запустить.
Нужно ли что-то устанавливать?
Нет. Mini App открывается прямо в Telegram. Также есть десктопная версия для продвинутых сценариев — управление каналами, интеграция с MCP, серверный режим.
Почему у поста в канале метка «via @bot»?
Mini App публикует посты через инлайн-механизм Telegram, поэтому в подписи появляется «via @bot». Чтобы публиковать от имени канала без метки, используйте десктопное приложение с ботом, добавленным как администратор канала.
Синхронизируются ли черновики между устройствами?
Да — черновики сохраняются в Telegram CloudStorage и восстанавливаются при открытии Mini App на другом устройстве. В Telegram Web и очень старых клиентах без CloudStorage используется локальное хранилище браузера.
Какой лимит по символам?
4096 символов для текстовых постов. С прикреплённым фото или видео лимит подписи — 1024.
Есть ли спойлер или пикер эмодзи?
Пока нет. Спойлер существует в editor-core, но не выведен в тулбар Mini App. Встроенного пикера эмодзи нет — используйте системный пикер Telegram или вставку из ОС.
Можно ли отправлять альбомы (несколько фото)?
Пока нет, один медиафайл на пост. Альбомы в планах.
Создано по методологии VibeCoder Heretic — автономные ИИ-агенты делают тяжёлую работу, разработчик фокусируется на главном.