Перейти к содержанию

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

Обработка любых событий Telegram, которые произошли в чате с ботом. Отслеживание любого события Телеграм с помощью функционала событий

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

Информация

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

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

события telegram

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

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

события телеграм

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

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

Информация

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

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

javascript бот

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

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

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

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

Информация

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

Информация

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

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

Важно

Для обработки событий в JavaScript-коде недоступны методы:

  • goToBlock(),
  • disableContinue(),
  • setContactByTelegramId(id),
  • setContactById(id)

Примеры

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

Для отладки обработки события вы можете отправить содержимого запроса в чат с ботом в сообщении. При отправке сообщения в чат — 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"    // Обновлённый текст сообщения
  }
}

Прием платежей Telegram Stars в чат-боте - создание системы продаж цифровых товаров

Пошаговое создание системы приема платежей в валюте Telegram Stars с автоматической выдачей цифровых товаров.

Изучите создание обработчиков событий через JavaScript, генерацию ссылок оплаты через Telegram Bot API, обработку успешных транзакций и построение системы продаж без интеграции внешних платежных систем.

Шаблон для установки проекта "Telegram Stars для оплаты в чат-боте | Телеграм звезды" в один клик:

Установить шаблон

Скрипт для получения тела ответа события:

var result = response.body;
sendMessage(result);

Скрипт для записи ID оплаты и типа продукта в переменные:

var payID = response.data.pre_checkout_query.id
var type = response.data.pre_checkout_query.invoice_payload
setContactVariable("payID", payID);
setContactVariable("type", type);

Интеграция GPT для обработки всех типов сообщений

Создайте умного Telegram бота: обработка текстовых сообщений, голосовых и изображений через OpenAI API. Автоматизация событий Телеграм.

Готовый шаблон для внедрения проекта "Как создать AI ассистента, который СЛЫШИТ, ВИДИТ и ПРОДАЕТ — за 1 урок (GPT + Tелеграм)" в один клик:

Установить шаблон

Скрипт для события получения сообщения пользователя и определения его типа:

var d = (response && response.data) ? response.data : (response || {});
var m = (d.message) || (d.result && d.result[0] && d.result[0].message) || {};
setContactVariable("debugData", JSON.stringify(m));
var t = (m && m.text) || "";
// Сначала текст
if (t) {
  setContactVariable("messageType", "text");
  setContactVariable("textMessage1", t);
}
// Потом голос
else if (m.voice && m.voice.file_id) {
  setContactVariable("messageType", "voice");
  setContactVariable("voiceFileId", m.voice.file_id);
}
// Если фото
else if (m.photo && m.photo.length > 0) {
  var ph = m.photo[m.photo.length - 1]; // берём самое большое фото
  setContactVariable("messageType", "photo");
  setContactVariable("photoFileId1", ph.file_id);
  // Сохраняем подпись, если есть
  if (typeof m.caption === "string" && m.caption) {
    setContactVariable("captionText", m.caption);
  }
}
// Остальное
else {
  setContactVariable("messageType", "other");
}

В личном кабинете LEADTEX уже доступны 250+ уроков по разработке чат-ботов и MiniApps, а также возможность присоединиться к крупнейшему комьюнити no-code разработчиков с 6000+ участниками - Перейти в личный кабинет.