Удаляем сообщения пользователей в беседах сообщества.

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

Чтобы бот-сообщество смог удалить сообщение, ему надо знать ID этого сообщения относительно себя. ID получается по методике, описанной в этой статье.

Важно!

Сообщения удаляются только из бесед сообществ. В обычных беседах не работает.

Бот не может удалять сообщения других админов. Просто блокируем выполнение команды с помощью условия: Не сотрудник аккаунта

Прямой эфир с демонстрацией настройки

Команда «Беседа сообщества - Удалить сообщение»

Событие:

1) Написал сообщение с текстом, содержащим админ дурак

Удаляем сообщения пользователей в беседах сообщества., image #1

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

Удаляем сообщения пользователей в беседах сообщества., image #2

Важно! Получение 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. Описание метода можно посмотреть в документации ВК.

Удаляем сообщения пользователей в беседах сообщества., image #3

Рассмотрим подробнее параметры запроса.

  • 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%. Режим: отправленное ботом для всех

Удаляем сообщения пользователей в беседах сообщества., image #4

5) При желании можно написать ботом-сообществом в чат, предупредив участников

Отправляем сообщение в беседу %peer_id% с текстом:
%subs_link% пишет мерзкую отвратительную гадость:
%content%

Удаляю сообщение из чата. Статус: %response%

Тест завершен успешно
Тест завершен успешно

Как мы видим, все работает. Творческих взлётов!

Автор настройки Никита Кузнецов, автор инструкции Андрей Горячих

Перейти на главную страницу инструкций
3506 views·88 shares