Задать вопрос

Как удалить сообщения в беседе в ВК через VK API?

Какой api метод в вк стирает все сообщения беседы от имени админа беседы для всех пользователей ? То есть старые сообщение увидеть никто не должен
  • Вопрос задан
  • 3375 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@StockholmSyndrome
такого метода нет, но мы не отчаиваемся и делаем так:

с помощью messages.getHistory и execute получаем все сообщения беседы по 5000 за запрос
код для execute будет примерно такой (лучше минифицировать для скорости):
var peer_id = 2000000001; // идентификатор беседы
var results = [];
var i = 0; 
var offset = 0; 
while (i < 25) {
  results.push(API.messages.getHistory({peer_id: peer_id, count: 200, offset: offset}));
  i = i + 1;
  offset = offset + 200;
}
return results@.items;

результатом будет массив из 25 массивов объектов сообщений
при этом с каждым запросом нужно увеличивать offset на 5000

затем перебираем эти массивы объектов, и если поле from_id равно идентификатору админа беседы, то добавляем поле id в какой-нибудь массив message_ids

когда все message_ids будут собраны, просто отправляем их в метод messages.delete с параметром delete_for_all=1

отправлять запросы execute'ом нужно до тех пор, пока длина массивов не станет нулевой

P.S. забыл обломать — сообщение можно удалить для всех только в течение 24 часов после написания, увы…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы