И может ответить пользователю, чтобы сообщение ушло от бота
В Малти это можно сделать очень легко.
Мы даже собрали готовую схему, которую вы можете себе установить.
Бот-секретарь v.9.2.
Обновленная версия с реакцией на закрытые профили и отправкой ответного сообщения администраторам
Ссылка на пример готовой схемы для Telegram:
💾 Cкачать схему
🔧 Инструкция по установке схем
Всё, что нужно сделать в ней - это получить айди по ключевому слову /id
И вставить полученную айди в блок действия «Указать ID служебного чата»
Ниже разберем подробнее каждый пункт.
Подготовка
Первым делом необходимо все подготовить перед сборкой:
Блок событие с контейнером «Входящее сообщение в чате» и условием «Текст сообщения», где вводим любой текст, который будем отправлять боту
Ключевик для получения ID чата.
И создаем блок Действие с контейнером «Отправить сообщение»
Получение ID чата
Соединяем два блока стрелкой
Сохраняем и включаем схему
Отправляем в чат ключевое слово, которое вы указали в блоке события
Если всё верно, то в ответ вы получите id чата в формате: -1001878491576
Скопируйте его. Он нам пригодится далее.
Если бот не ответил, пройдитесь еще раз по каждому пункту и всё проверьте.
Частая ошибка, когда добавляют событие «Входящее сообщение», вместо «Входящее сообщение в чате.»
Пересылаем сообщение в админский чат
Если предыдущие этапы пройдены, настраиваем пересылку сообщений из бота в админский чат.
Создаем блок Событие с контейнером «Входящее сообщение»
При необходимости, добавьте условия, например, на какие слова не реагировать.
Событие будет реагировать на любой текст.
Создаем блок Действие с контейнером «Задать значение числовой переменной»
Задаем на латинице любое название числовой переменной.
Например: chat_id
И вставляем в «Новое значение» — id, которое мы скопировали ранее.
ID чата для пересылки.
Далее создаем контейнер действия «Сменить чат для следующих действий»
Ставим галочку «Получать значение из переменной»
И в переменной прописываем:
Меняем чат на служебный
Далее создаем контейнер действия «Записать в переменную JSON или массив» с названием: item и значением:
И добавляем контейнер действия «Задать значение текстовой переменной» с названием system_data и значением:
Переменная для администратора
Для проверки типов вложения можно воспользоваться условием: Тип вложения и выбрать все необходимые типы вложений.
Пример условий
Пример ветки вложений
Готово! Осталось вывести в действие текст или материалы, которые пользователь вам отправил.
Для остальных типов вложений делаете аналогичные условия и действия, на ваш выбор. В схеме добавлена пересылка ответных сообщений в чат администратора. Если необходимо можете добавить сей функционал самостоятельно, либо пользоваться готовой схемой.
Пересылаем текст и файлы пользователей
Добавляем контейнер «Отправить вложение в Телеграм» выбираем тип вложения через условную переменную на шаге 6.
Тип вложения.
Выбираем тип файла, который будем пересылать от пользователя:
Выбираем нужный тип.
А в поле «Код вложения» пишем переменную:
Выбираем тип вложения, который надо пересылать.
Добавляем флажок «Добавить описание» с текстом:
Готово!
Отвечаем пользователю в Telegram-боте
Как это работает?
Админ в чате нажимает на сообщение с текстом пользователя и нажимает ответить. В примере на вложение с фото.
Ответное сообщение.
После чего вводит текст и отправляет.
Если всё настроено верно, то пользователь от бота получит ваше сообщение.
А вы увидите текст:
Ответное сообщение отправлено успешно.
Есть несколько условий, при которых ответ не сработает:
1. Не будет работать, если вы отвечаете на стикер или файлы! Нужно отвечать именно на текст от бота.
2. Не будет работать, если пользователь в настройках Telegram установил запрет на пересылку своих сообщений.
Как это настроить?
Создаем блок Действие с контейнером "Входящее сообщение"
При необходимости, добавьте условия, например, на какие слова не реагировать.
Пример события
Для того, чтобы не было реакции на переспуску в чате добавляем условие: «Числовая переменная»
больше 0, т.е. администратор отвечает на конкретное сообщение пользователя, и не реагировать на переписку в чате.
Создаем блок Действие с контейнером «Задать значение числовой переменной»
Задаем на латинице любое название числовой переменной.
Например: chat_id
И вставляем в «Новое значение» значение ниже
ID служебного чата.
Для сохранения ID ответа добавляем еще один контейнер «Задать значение числовой переменной»
Задаем переменную: admin_message_id
И вставляем в «Новое значение»
Сохраняем ID сообщения.
Для сохранения текста админа добавляем еще один контейнер «Задать значение текстовой переменной»
Задаем переменную: admin_text
И вставляем в «Новое значение»
Текст ответа администратора
Для получения Telegram ID клиента добавляем еще один контейнер «Поиск в тексте по регулярному выражению»
Исходный текст :{var:object.reply.text}
Регулярное выражение : #id(\d+)
Сохранить результат в переменную : user_tg_id
Сохраняем ID клиента
Для получения ID ответного сообщения клиента добавляем еще один контейнер «Поиск в тексте по регулярному выражению»
Исходный текст :{var:object.reply.text}
Регулярное выражение : №(\d+)
Сохранить результат в переменную : object_id
Получаем ID ответного сообщения.
Добавляем еще один контейнер «Сменить чат для следующих действий»
Ставим галочку «Получить значение из переменной»
В переменную вставляем: {var:user_tg_id[0]}
Меняем чат на клиентский.
5. Для проверки есть ли ID клиента и ID сообщения добавляем условия:
«числовая переменная»
больше 0, и условие «числовая переменная»
больше 0.
Условие для проверки ответного сообщения
Готово! Теперь осталось теперь передать сам текст или файл. Аналогично условию выше можно проверять тип вложения.
Пересылаем пользователю файл и текст:
Создаем блок действия с контейнером «Отправить вложения в Telegram»
Выбираем тип вложения
В код вложения вставляем переменную
{var:object.attachments[0].code}
Ответить на сообщение {var:object_id[0]}
Ставим галочку «Добавить описание»
В описание к вложению вставляем переменную
{var:admin_text}
Пример ответного сообщения
Как увидеть отправилось сообщение или нет
Создаем блок действия и добавляем контейнеры:
Контейнер «Задать пакет временных переменных»
переменная successи значением:
переменная errors со значением:
Проверка отправки
Ставим галочку «Получить значение из переменной»
И в переменную вставляем: {var:chat_id}
Контейнер «Сменить чат для следующих действий»
Ставим галочку «Получить значение из переменной»
И в переменную вставляем: {var:chat_id}
Переключаем чат на служебный
Для того, чтобы проверитьу спешно ли отправилось сообщение добавляем условие: «числовая переменная» {var:success}равно 1, т.е. сообщение было отправлено успешно. Соедняем с портом «да»
Контейнер «Отправить сообщение»
Вставляем текст:
Сообщение отправлено успешно.
Из порта «Нет» делаем контейнер «Отправить сообщение»
Вставляем текст: