Любое событие Telegram

Позволяет обрабатывать любые события Telegram, которые произошли в чате с ботом.

Создание обработчика событий

Прежде чем перейти к созданию обработки события, сначала создайте новый сценарий, который будет запускаться по событию.

Чтобы настроить отслеживание любого события Telegram, перейдите в раздел "События мессенджеров и приложений", откройте вкладку Telegram.

Вкладка Telegram в разделе "События мессенджеров и приложений"

Нажмите на кнопку "Создать" и выберите "Любое событие Telegram".

Выбор события

В форме создания события заполните название и выберите сценарий.

Выбранный сценарий будет запущен в случае успешного выполнения скрипта.

Если скрипт отработает с ошибкой, то продолжится выполнение сценария с того места, где контакт находился до срабатывания события.

Создание обработчика события

Добавьте JavaScript-код в поле для ввода кода. В коде вы можете обработать события Telegram, подробнее о доступных событиях см. документацию Telegram.

Полученный от Telegram запрос доступен в объекте response:

var rawBody = response.body; // Сырое тело запроса
var data = response.data; // Объект всех переменных запроса, включая строку запроса, форму, тело и т.д.

Чтобы во время отладки посмотреть содержимое запроса, вы можете отправить его в сообщении в чат с ботом — см. пример кода Отправка содержимого запроса в сообщении в чат с ботом

При добавлении бота в группу в качестве администратора все события группы будут доступны, но все методы JS-кода будут работать только для контактов бота. Например, если инициатор события — контакт, подписанный на бота, то бот сможет отправить ему сообщение в чате методом sendMessage().

Подробнее о доступных переменных и функциях.

Примеры

Отправка содержимого запроса в сообщении в чат с ботом

Для отладки обработки события вы можете отправить содержимого запроса в чат с ботом в сообщении. При отправке сообщения в чат — Telegram может интерпретировать специальные символы (например, подчёркивания, звёздочки) как элементы форматирования. Чтобы отобразить параметры запроса в виде корректного JSON, используйте следующий код:

var formatted = JSON.stringify(response.data, null, 2);
var message = "<pre><code>" + formatted + "</code></pre>";
sendMessage(message);

Событие Сообщение отредактировано

var data = response.data;

sendMessage("Вы отредактировали сообщение. Новое содержимое:" + data.edited_message.text);

В этом коде:

  • если параметр data.edited_message.text существует, значит произошло событие edited_message. После отправки сообщения будет запущен сценарий, указанный в настройках события

  • если параметр не существует, то скрипт отработает с ошибкой, выполнение вернется туда, где контакт находился до того, как отредактировал сообщение. Вы также можете вызвать исключение явным образом:

if (!data.edited_message) {
  throw new Error("Ожидалось событие редактирования сообщения");
}

Пример ответа при срабатывании этого события (edited_message)

{
  "update_id": 123456789,

  // Событие: пользователь отредактировал сообщение
  "edited_message": {
    
    // Информация о чате, в котором произошло редактирование
    "chat": {
      "first_name": "First",          // Имя пользователя
      "id": 111111111,                // ID чата (совпадает с ID пользователя в личных чатах)
      "last_name": "Last",            // Фамилия пользователя
      "type": "private",              // Тип чата: private, group, supergroup, channel
      "username": "exampleuser"       // Username
    },

    "date": 1710000000,               // Время отправки исходного сообщения (UNIX-время)
    "edit_date": 1710000300,          // Время редактирования сообщения (UNIX-время)

    // Информация об отправителе
    "from": {
      "first_name": "First",
      "id": 111111111,
      "is_bot": false,
      "language_code": "en",           // Язык интерфейса Telegram у пользователя
      "last_name": "Last",
      "username": "exampleuser"
    },

    "message_id": 112,                // ID сообщения
    "text": "Updated message text"    // Обновлённый текст сообщения
  }
}

Last updated

Was this helpful?