Удаляем сообщения пользователей в беседах сообщества.
Всем привет! Сегодня будет реализован интересный функционал удаления сообщений пользователя из бесед с помощью бота.
Чтобы бот-сообщество смог удалить сообщение, ему надо знать ID этого сообщения относительно себя. ID получается по методике, описанной в этой статье.
Важно!
Сообщения удаляются только из бесед сообществ. В обычных беседах не работает.
Бот не может удалять сообщения других админов. Просто блокируем выполнение команды с помощью условия: Не сотрудник аккаунта
Команда «Беседа сообщества - Удалить сообщение»
Событие:
1) Написал сообщение с текстом, содержащим админ дурак

2) Добавляем условие: %peer_id%
= ID беседы относительно бота-сообщества, для которого запускается команда (который «слушает» сообщения и который будет удалять сообщение). Как получить ID беседы — читайте в этой статье.

Важно! Получение ID беседы (peer_id)
Не пытайтесь найти ID в ссылке на беседу! ID беседы разный у разных пользователей / ботов. Чтобы узнать ID беседы относительно нужного бота-сообщества, прочитайте инструкцию.
Суть коротко: добавьте бота-сообщество в беседу и настройте команду: вы пишете сообщение в беседу, а бот-сообщество пишет ответное сообщение с переменной %peer_id%
(пишет хоть в саму беседу, хоть в личку — неважно).
Вы получите число > 2 000 000 000. Например, 2000000001
. Именно такие числа VK воспринимает как ID беседы. Если число будет меньше 2 млрд., то сообщение будет уходить пользователю с таким VK ID!
Действия:
1) Временная переменная %conv_mess_id%
Значение зависит от версии VK API, которую вы выставили в своём сообществе. Проверить её можно из Автопилота: раздел Сообщества — Настройки — Настройки подключения — Открыть настройки Callback API в VK
- Если у вас версия VK API до 5.103 (5.102 или ниже), то впишите:
%request.input.conversation_message_id%
- Если у вас версия VK API от 5.103 (5.103 или выше), то впишите:
%request.input.message.conversation_message_id%
Поясню: %request.input%
— входящий запрос на Автопилот, обычно ВК или Senler так отправляют данные
2) Мы получили ID сообщения относительно беседы, но ID этого же сообщения относительно нашего бота-сообщества другое. Чтобы бот-сообщество смог удалить сообщение, ему надо знать ID сообщения относительно себя.
Чтобы узнать ID сообщения относительно бота-сообщества, отправляем GET/POST запрос на метод VK API — messages.getByConversationMessageId
. Описание метода можно посмотреть в документации ВК.

Рассмотрим подробнее параметры запроса.
peer_id
=%peer_id%
— идентификатор групповой беседыgroup_id
=%club_id%
— идентификатор сообществаconversation_message_ids
=%conv_mess_id%
— идентификаторы сообщений.v
=5.92
— версия Callback API в сообществеaccess_token
= ключ доступа сообщества
3) Временная переменная %mess_id%
= %response.response.items.0.id%
Здесь парсим ответ сервера %response%
, получая айдишку сообщения относительно беседы.
Для удобного парсинга JSON-объектов можно воспользоваться примечаниями ресурса, скопировав туда объект, и нажав кнопку «Украсить». Либо перейти на специальный сайт.
4) Удаляем сообщение с диалоге с сообществом, ID которого равно %mess_id%
. Режим: отправленное ботом для всех

5) При желании можно написать ботом-сообществом в чат, предупредив участников
Отправляем сообщение в беседу %peer_id%
с текстом:%subs_link% пишет мерзкую отвратительную гадость:
%content%
Удаляю сообщение из чата. Статус: %response%

Как мы видим, все работает. Творческих взлётов!
Автор настройки Никита Кузнецов, автор инструкции Андрей Горячих
Перейти на главную страницу инструкций