Метод 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.
ИНСТРУКЦИЯ
- Для отправки текстового сообщения с помощью 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» = «Название переменной».
Пример 👇

В нашем случае, название переменной - msgidcurrent.
2. Вторым шагом нам необходимо начать формировать массив данных с помощью нового блока на Leadtex «Интерпретатор JavaScript».
Конструкция в рамках данного блока будет выглядеть следующим образом 👇
var msgidcurrent = getContactVariable("msgidcurrent");
var msgIdArray = '' '';
var temp = '' '';
temp = msgidcurrent;
setContactVariable("msgIdArray", temp);

Что здесь происходит? - Давайте последовательно разберем!
- 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);

- 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}}]"
}

Во время тестов оставляйте галочку «Выводить тело ответа в чат». В случае, если запрос отработает корректно, ответ от сервера будет: {"ok":true,"result":true}.
ПРИМЕР РАБОТЫ ЗАПРОСА «deleteMessages»