Задать вопрос
pikamonov
@pikamonov
py/node.js/web coder

VK Api, message.delete 15 error, что делать?

Здравствуйте!
не знаю, что делать, и куда пинаться ,возникает проблема, с вызовом метода message.delete (https://dev.vk.com/ru/method/messages.delete)

Код;
spoiler
const { getUserRole } = require('../util.js')
const { getTime } = require('date-fns');

let countMsg = 0
async function deleteMessages(context, peerId, userId) {
  try {
    const yesterday = getTime(new Date()) - (24 * 60 * 60 * 1000); // Таймстамп 24 часа назад

    let offset = 0;
    let messagesToDelete = [];

    // Получаем все сообщения в беседе за последние 24 часа
    while (true) {
      const response = await vk.api.messages.getHistory({
        peer_id: peerId,
        count: 200,
        rev: 1
      });

      const messages = response.items;

      // Фильтруем сообщения, оставляем только те, которые отправлены за последние 24 часа и принадлежат пользователю
      const filteredMessages = messages.filter(message => {
        return message.date * 1000 > yesterday && message.from_id === userId;
      });

      // Если больше нет сообщений, выходим из цикла
      if (filteredMessages.length === 0) {
        break;
      }

      messagesToDelete = messagesToDelete.concat(filteredMessages);

      offset += 200; // Увеличиваем смещение для следующего запроса
    }

    // Удаляем отфильтрованные сообщения
    for (const message of messagesToDelete) {
      await vk.api.messages.delete({
        message_ids: message.id,
        delete_for_all: 1 // Удаляем для всех участников беседы
      });
      
      countMsg++
    }

    await context.send(`⚠ Удалено ${countMsg} сообщений [id${context.replyMessage.senderId}|пользователя] за последние 24 часа`)
  } catch (error) {
    console.error('Произошла ошибка:', error);
  }
}

module.exports = {
  command: '/delete',
  aliases: ['/del', '/удалить', '/cc', '/чистка', '/очистка'],
  description: 'null',
  async execute(context) {
	const { peerId, senderId, text } = context;
    const senderUserRole = await getUserRole(peerId, senderId);
    if (senderUserRole < 20) {
      return context.reply('❌ Отказано, ваша роль слишком низкая для использования этой команды.');
    } 
	console.log(context.replyMessage) // логи, для отслеживания метода в консоли, для получения json
	    await vk.api.messages.delete({
        peer_id: context.peerId,
        delete_for_all: 1,
        cmids: context.replyMessage.conversationMessageId,
      });
	    await vk.api.messages.delete({
        peer_id: context.peerId,
        delete_for_all: 1,
        cmids: context.conversationMessageId,
      });

      deleteMessages(context, context.peerId, context.replyMessage.senderId)
  }
}


Возникает ошибка, см.скрин;
spoiler
6772d8eb84cd2447080549.png


Команда - удаляет сообщения пользователя, за сутки , - выдает логи (json) которые отображают, конвертацию сообщения ,само сообщение - и от кого оно, (если оно было вызвано по реплаю), но потом бьется в access denied. Либо не может получить историю сообщений, что довольно-таки странно ,и пытается запросить токен пользователя, для получения истории либо еще что-то... я не знаю, помогите =(

p/s и не бейте за говно-код, я только изучаю node.js
p/s2 комментарии расписал chatgpt
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
pikamonov
@pikamonov Автор вопроса
py/node.js/web coder
Вместе с ребятами из Технической Поддержки VK удалось разобраться в проблеме,
Ошибка заключалась в неверно указанном методе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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