> For the complete documentation index, see [llms.txt](https://book.microcrm.online/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.microcrm.online/changelog/v1.0.1.md).

# v1.0.1

## Добавлено

## **Узел «Телеграм Канал»**&#x20;

Новый тип ноды для управления Telegram-каналами и группами через Bot API.\
Позволяет выполнять **27 действий** без написания кода.

### **Источники канала**&#x20;

| Источник          | Описание                                                                                                           |
| ----------------- | ------------------------------------------------------------------------------------------------------------------ |
| `managed_channel` | Канал из БД (`bot_managed_channels`), автоматически добавляется при добавлении бота в канал через `my_chat_member` |
| `variable`        | `chat_id` из переменной контекста: `{{context.my_channel_id}}`                                                     |
| `manual`          | Ручной ввод `chat_id` (например, `-1001234567890`)                                                                 |

**5 категорий, 27 действий:**

### **1. Информация — 4 действия**

| Действие          | Telegram метод          | Параметры |
| ----------------- | ----------------------- | --------- |
| Инфо о канале     | `getChat`               | —         |
| Кол-во участников | `getChatMemberCount`    | —         |
| Список админов    | `getChatAdministrators` | —         |
| Инфо об участнике | `getChatMember`         | `user_id` |

### **2. Модерация  — 5 действий**

| Действие           | Telegram метод                    | Параметры                                  |
| ------------------ | --------------------------------- | ------------------------------------------ |
| Бан                | `banChatMember`                   | `user_id`, `until_date`, `revoke_messages` |
| Разбан             | `unbanChatMember`                 | `user_id`, `only_if_banned`                |
| Ограничить права   | `restrictChatMember`              | `user_id`, `permissions`, `until_date`     |
| Повысить до админа | `promoteChatMember`               | `user_id`, `promote_rights` (10+ прав)     |
| Титул админа       | `setChatAdministratorCustomTitle` | `user_id`, `custom_title`                  |

### **3. Ссылки-приглашения  — 6 действий**

| Действие         | Telegram метод           | Параметры                                                     |
| ---------------- | ------------------------ | ------------------------------------------------------------- |
| Экспорт ссылки   | `exportChatInviteLink`   | —                                                             |
| Создать ссылку   | `createChatInviteLink`   | `name`, `member_limit`, `expire_date`, `creates_join_request` |
| Изменить ссылку  | `editChatInviteLink`     | `invite_link`, `name`, `member_limit`, `expire_date`          |
| Отозвать ссылку  | `revokeChatInviteLink`   | `invite_link`                                                 |
| Принять заявку   | `approveChatJoinRequest` | `user_id`                                                     |
| Отклонить заявку | `declineChatJoinRequest` | `user_id`                                                     |

### **4. Редактирование канала  — 8 действий**

| Действие            | Telegram метод         | Параметры                            |
| ------------------- | ---------------------- | ------------------------------------ |
| Изменить название   | `setChatTitle`         | `title`                              |
| Изменить описание   | `setChatDescription`   | `description`                        |
| Установить фото     | `setChatPhoto`         | `photo` (URL)                        |
| Удалить фото        | `deleteChatPhoto`      | —                                    |
| Изменить права      | `setChatPermissions`   | `permissions` (объект прав)          |
| Закрепить сообщение | `pinChatMessage`       | `message_id`, `disable_notification` |
| Открепить сообщение | `unpinChatMessage`     | `message_id` (опц.)                  |
| Открепить все       | `unpinAllChatMessages` | —                                    |

### **5. Контент  — 5 действий**

| Действие            | Telegram метод                                         | Параметры                                                               |
| ------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------- |
| Отправить сообщение | `sendMessage` / `sendPhoto`/`Video`/`Audio`/`Document` | `text`, `media_type`, `media_url`, `parse_mode`, `disable_notification` |
| Редактировать       | `editMessageText`                                      | `message_id`, `text`, `parse_mode`                                      |
| Удалить             | `deleteMessage`                                        | `message_id`                                                            |
| Копировать          | `copyMessage`                                          | `from_chat_id`, `message_id`                                            |
| Переслать           | `forwardMessage`                                       | `from_chat_id`, `message_id`                                            |

## **Медиа-контент**

\
При отправке сообщения можно приложить медиа (`photo`, `video`, `audio`, `document`).\
Текст используется как `caption` (лимит Telegram: 1024 символа).\
URL медиа поддерживает переменные: `{{context.photo_url}}`.

### **Сохранение результатов:**

* `saveResultToVariable` — результат API-вызова целиком
* `saveMessageIdVariable` — `message_id` отправленного сообщения (для последующего редактирования/удаления/закрепления)

### **Обработка ошибок**

| Режим              | Поведение                                              |
| ------------------ | ------------------------------------------------------ |
| `stop`             | Остановка сценария, ошибка в логах                     |
| `continue`         | Игнорировать ошибку, перейти к следующему узлу         |
| `use_error_output` | Перейти по отдельному выходу «Ошибка» (красный handle) |

При ошибке текст сохраняется в `errorVariable`.

## **Валидация прав бота:**

\
Для управляемых каналов (`managed_channel`) перед вызовом API проверяются сохранённые права бота из `bot_managed_channels.bot_permissions`. Если права недостаточны — ошибка **до** вызова API.

**Автоматическое распознавание каналов:**\
При добавлении бота в канал/группу Telegram отправляет событие `my_chat_member`. Вебхук автоматически сохраняет канал в `bot_managed_channels` с правами и типом.

***

## **Узел «Тип сообщения»**

* Маршрутизация по типу входящего сообщения: текст, фото, видео, аудио, документ, стикер, контакт, локация
* Автоматическая установка глобальных переменных: `_message_type`, `_photo_url`, `_video_url`, `_media_count`, `_message_text`
* Поддержка нескольких вложений с нумерацией (`_photo_url_1`, `_photo_url_2`)

***

## **Узел «Nano Banana» (генерация изображений)**

* Генерация и редактирование изображений через AI-провайдеров с флагом `supports_image_generation`
* Поддержка синхронных (Gemini, OpenAI) и асинхронных (Kie AI) провайдеров
* Одновременная отправка результата в чат и сохранение в переменную (Base64 с префиксом `data:image/png;base64,`)
* Очистка текста от пустых Markdown-плейсхолдеров

***

## Улучшено

### **Узел «Отправить сообщение»**&#x20;

* Кнопка быстрой вставки переменных (`+`) в поле URL медиа-вложений (`VariableInput`)
* Единообразный UI для всех полей ввода переменных

### **Узел «HTTP-запрос»**&#x20;

* Прямой вызов `fetch` вместо AI-прокси для корректной обработки заголовков
* Корректный захват не-JSON ответов (текст, HTML) в контекст
* Жёсткое ожидание завершения запроса при `waitForApiResponse: true`

### **Узел «JSON Processor»**&#x20;

* Система мульти-маппинга: `rootVariable` + `mappings` для извлечения нескольких полей одновременно
* Редактор с полем «Sample JSON» (до 50 КБ), live-preview и кнопкой «Заполнить из примера»
* Приоритет `rootVariable` над `saveToVariable`
* Автоматическая миграция существующих узлов при загрузке сценария

### **AI-ассистент конструктора ботов**

* Анализ первого сообщения: пропуск вопросов, ответы на которые уже даны
* Паттерн cURL → HTTP → JSON Processor → Сообщение для интеграций с внешними API
* Документация медиа-переменных: `saveResponseTo` → `context.{alias}_url`, `_type`, `_data` и др.
* Правила использования `mediaAttachments` вместо вставки URL в текст

### **Дашборд**

* Обновлённый дизайн виджетов и карточек метрик
* Улучшенная визуализация графиков

### **Интеграции**

* Улучшенный UI диалогов подключения интеграций
* Обновлённое отображение статусов подключения

### **Подписка и биллинг**

* Обновлённый дизайн страницы тарифных планов
* Улучшенное отображение лимитов и использования ресурсов


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.microcrm.online/changelog/v1.0.1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
