Метод API-Telegram «deleteMessages»

Метод API-Telegram «deleteMessages»


Сегодня на подробном обзоре метод API-Telegram «deleteMessages», который был выпущен с одним из последних обновлений мессенджера.

Давайте разбираться 👇

Что можно сделать с помощью «deleteMessages»?

Логично - удалить определенный массив сообщений в диалоге, а - не одно выборочное.

В массив можно включить от 1 до 100 сообщений.

Какие вводные данные необходимы для формирования запроса к Api мессенджера с пользованием «deleteMessages»?

chat_id - id чата, в котором необходимо удалить массив сообщений.

message_ids - идентификаторы сообщений, которые необходимо удалить из чата.

Что важно помнить при использовании методов «deleteMessage» и «deleteMessages»?

  • Бот может удалить сообщение, которое было отправлено менее 48 часов назад (2 суток).
  • При использовании данных методов следует учитывать нюансы площадки: канал, группа, приватный чат. Подробнее о которых вы можете прочесть здесь 👉 https://core.telegram.org/bots/api#deletemessage
  • Все сообщения, которые потребуется удалить должны быть отправлены с помощью блока HTTP-запрос для сохранения ID.

ИНСТРУКЦИЯ

  1. Для отправки текстового сообщения с помощью HTTP-блока нам понадобится метод «sendMessage».

Пример запроса: https://api.telegram.org/bot{{token}}/sendMessage?chat_id={{telegram_id}}&text=Текст

Данный метод мы подробно разбирали здесь👉 https://t.me/academy_x/367, поэтому не будем долго погружаться в детали :)

Важная рекомендация! Сохраняйте токен в глобальную перемену, чтобы при изменении исходных данных чат-бота не менять всю структуру вручную.

При отправке сообщения обязательно сохраняйте ID в отдельную переменную с помощью функции «Записать ответ json в переменные».

Чтобы записать ID отправленного сообщения необходимо выстроить следующее соотношение переменных: «result.message_id» = «Название переменной».

Пример 👇

Пример запроса sendMessage с сохранением ID

В нашем случае, название переменной - msgidcurrent.

2. Вторым шагом нам необходимо начать формировать массив данных с помощью нового блока на Leadtex «Интерпретатор JavaScript».

Конструкция в рамках данного блока будет выглядеть следующим образом 👇

var msgidcurrent = getContactVariable("msgidcurrent");

var msgIdArray = '' '';

var temp = '' '';

temp = msgidcurrent;

setContactVariable("msgIdArray", temp);

Пример использования блока Интерпретатор JavaScript для формирования массива

Что здесь происходит? - Давайте последовательно разберем!

  • var msgidcurrent = getContactVariable("msgidcurrent");

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

var msgidcurrent - это переменная, которая будет зафиксирована в рамках блока.

getContactVariable("msgidcurrent") - функция JS Leadtex, которая позволяет получить ранее записанную переменную.

В нашем случае, в переменную msgidcurrent, в блоке Интерпретатор JavaScript, будет внесено значение из одноименной переменной на Leadtex, равное ID сообщения.

  • var msgIdArray = '' ''

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

  • var temp = '' ''

Еще одна переменная с пустым значением, позволяющая объединять массив msgIdArray и новые ID из переменной msgidcurrent.

  • temp = msgidcurrent

На данном шаге мы присваиваем переменной temp значение единственного, на данном этапе ID сообщения - msgidcurrent.

  • setContactVariable("msgIdArray", temp)

На финальном шаге, мы создаем переменную на Leadtex, с помощью функции setContactVariable, где msgIdArray - название локальной переменной, а temp - значение, которое будет в нее внесено.

3. В HTTP-блоках с отправкой сообщений, в дальнейшем мы не вносим никаких структурных измненений.

4. Структура блока «Интерпретатор JavaScript» будет изменена, так как в последующих шагах мы уже будем иметь прежние значения в массиве.

Рассмотрим подробнее 👇

var msgidcurrent = getContactVariable("msgidcurrent");

var msgIdArray = getContactVariable("msgIdArray");

var temp = '' '';

temp = msgIdArray+','+msgidcurrent;

setContactVariable("msgIdArray", temp);

Пример использования блока Интерпретатор JavaScript для формирования массива
  • var msgidcurrent = getContactVariable("msgidcurrent")

Для записи актуального ID сообщения в переменную msgidcurrent, мы вновь вызываем локальную переменную Leadtex, в которую было внесено последнее ID отправленного сообщения в HTTP-блоке.

  • var msgIdArray = getContactVariable("msgIdArray")

Ранее в переменную msgIdArray, которую мы создали в первом блоке Интерпретатор JavaScript, мы вписывали прежние значения ID, соответственно для формирования актуального массива нам необходимо получить все прежние значения.

  • var temp = '' ''

Мы вновь создаем функциональную переменную с пустым значением для объединения информации.

  • temp = msgIdArray+','+msgidcurrent

Ранее, в данную переменную мы вносили только значения ID первого сообщения, но теперь у нас появился массив прежних данных, которые мы должны объединить через запятую.

Для этого мы берем переменную msgIdArray (прежний массив), разделитель ',' и переменную msgidcurrent (значение последнего ID).

Благодаря этому мы получаем определенный массив данных через запятую, который будет выглядеть следующим образом: 13979,13980,13981 (пример).

  • Финальный шаг - мы сохраняем данный массив в переменную setContactVariable("msgIdArray", temp).

Вуаля, у нас на платформе есть переменная, в которую внесен весь нужный массив.

Далее блок Интерпретатор JavaScript копируем и ставим после каждого HTTP-блока с отправкой сообщения, ничего не меняя!

5. Финальный шаг - непосредственное удаление сообщений.

Пример запроса:

url: https://api.telegram.org/bot{{token}}/deleteMessages?

Body / Json:

{

 "chat_id": "{{telegram_id}}",

 "message_ids": "[{{$msgIdArray}}]"

}

Метод deleteMessages

Во время тестов оставляйте галочку «Выводить тело ответа в чат». В случае, если запрос отработает корректно, ответ от сервера будет: {"ok":true,"result":true}.


ПРИМЕР РАБОТЫ ЗАПРОСА «deleteMessages»



Report Page