Удаление сообщений сообщества в чате другого сообщества

Часто возникает задача: подчищать сообщения сообщества (бота-персонажа) в чате основного сообщества. Но сложность возникает в том, что Автопилот при отправке сообщения в чат не возвращает ничего (просто 0) и поэтому не можем удалить сообщение.

После долгих тестов я нашел решение: нужно отправить сообщение по API и удалить так же по API.

Покажу на примере приветствия в чате. Т.е. при вступлении пользователя в чат сообщество-персонаж будет приветствовать участника и через время удалять свое сообщение. На примере этого сможете использовать уже для своих задач

Событие:

  1. Для примера буду приветствовать пользователя, для этого в событии
    «Добавился в беседу или покинул ее» ставлю переключатель «добавился»
В событии реагируем на вступление
В событии реагируем на вступление

Действия:

  1. Формирую временную переменную %text% с текстом приветствия. Здесь @id%vk_id% (%first_name%)— упоминание игрока в беседах. Больше переменных есть в инструкции по шаблонам переменных.
 @id%vk_id% (%first_name%), добро пожаловать в чат!
Пример действия
Пример действия
  1. Для отправки сообщения в чат используем действие
    «Отправить запрос» на адрес:
https://api.vk.com/method/messages.send

с параметрами:

  • v = 5.131 - версия ВК
  • access_token= Ключ доступа сообщества (берем из настроек подключения АП). Я записал в ресурс для удобства, поэтому берем значение из ресурса, например так: {get}285143{/get}У вас номер ресурса будет другой
  • random_id= {date}%s{/date}{rand_range}1-1000{/rand_range}— рандомное число для предотвращения повторной отправки сообщения. В примере формируете текущее время в юниксе и случайное число от 1 до 1000
  • peer_ids = %peer_id% — id беседы. Как получить id беседы, прочитать можно в этой короткой инструкции
  • group_id= %club_id% — id сообщества, от которого отправляем сообщение.
  • message= %text% — текст сообщения из переменной %text%
Важно! Примеры взяты из документации ВК. Ее можно найти тут
Пример действия
Пример действия
  1. Чтобы получить id отправленного сообщения в беседе с помощью JSON.PATH сохраняем в переменную %conv_mess_id%
    следующее значение:
%response.response.0.conversation_message_id%
Удаление сообщений сообщества в чате другого сообщества, image #4
  1. Для удаления сообщения через время, действием «Запустить таймер» устанавливаем время, через которое удалить сообщение. В моем случае 5 сек для тестирования.
Важно! Каждый запуск таймера тратит 1 милю, то есть, если у вас в команде 1 таймер, команда израсходует 2 мили (1 таймер + событие). Будьте внимательны.
Пример таймера
Пример таймера
  1. Для удаления сообщения используем действие
    «Отправить запрос» на адрес:
https://api.vk.com/method/messages.delete

С параметрами:

  • v = 5.131 - версия ВК
  • access_token= Ключ доступа сообщества (берем из настроек подключения АП). Я записал в ресурс для удобства, поэтому берем значение из ресурса, например так: {get}285143{/get}У вас номер ресурса будет другой
  • peer_id = %peer_id% — id беседы. Как ее получить, можно прочесть в соответствующей инструкции.
  • group_id= %club_id% — id сообщества, от которого отправляем сообщение.
  • cmids= %conv_mess_id% — id сообщения из переменной %conv_mess_id%
  • delete_for_all= 1 — удалить сообщение для всех
Важно! Примеры взяты из документации ВК. Ее можно найти тут
Удаление сообщений сообщества в чате другого сообщества, image #6
После пункта 3 и 4 не забывайте сделать для себя отладочное сообщение при тестировании с выводом %response%
Важно! После тестирования нужно поставить отладочное сообщение на паузу, иначе %response% будет перезаписан после отправки сообщения
397 views·16 shares