vknet / vk

Vkontakte API for .NET
https://vknet.github.io/vk/
MIT License
568 stars 222 forks source link

MessagesCategory.DeleteAsync #1607

Open pvarets00101 opened 9 months ago

pvarets00101 commented 9 months ago

Перед созданием нового бага, пожалуйста попробуйте использовать последнюю версию из nuget. Если проблема продолжает воспроизводиться, то для создания нового бага отразите краткую суть проблемы в заголовке и заполните следующие пункты:

  1. Target для .NET используемый в проекте: (Официально поддерживаем , .net 4.5, NETStandard2.0) (поставьте 'x' в квадратных скобках)

    • [ ] .net 4.5
    • [ ] NETStandard2.0
    • [x] другое. Указать строкой ниже. - [x] .NET 7
  2. Класс и метод в котором возникла проблема: Класс: MessagesCategory , Метод: public Task<IDictionary<ulong, bool>> DeleteAsync( IEnumerable messageIds, bool? spam = null, ulong? groupId = null, bool? deleteForAll = null)

  3. Пример кода для воспроизведения проблемы, пожалуйста указавыйте конкретные значения параметров запроса:

!!!на 1 скрине id = 56, но в ответе приходит ["41" : 1], наверное в этом проблема image image

  Параметры Delete()Х
IEnumerable<ulong> messageIds = [56],
bool? spam = null,
ulong? groupId = 223856532
bool? deleteForAll = true
  1. JSON ответа. Для удобства сбора этих данных подключите логи (https://github.com/vknet/vk/wiki/Logging):

ответ такой image

Проверил на последней версии нугета, не работает. На данный момент версия 1.62.0.

  1. Если в примере не указаны конкретные значения параметров запроса укажите их здесь:

  2. PS Если у вас появился вопрос по работе функциональности, то обратитесь за помощью в Telegram Chat, или напишите мне, не нужно плодить задачи типа как работает ф-я X, в противном случае буду закрывать без объяснения причины. После разбора проблемы будем дополнять документацию более полными примерами

CaCTuCaTu4ECKuu commented 1 month ago

Проблему я определил ID который возвращает ВК при выполнении это внутренний ID сообщения в пределах диалога (cmids вроде который), в котором было удаление, а передаете вы ID сообщения в пределах своего аккаунта, если я правильно понимаю, поэтому при поиске в ответе его не находит и результат, соответственно, false

В моем понимании глобальные ID сообщений в пределах аккаунта это неправильно и видимо ВК решили так же и требуют использовать peerId + cmid что вполне логичку

Я короче измению методы, полагаю надо полностью убирать старые и менять их на новые, но единственный вариант который я вижу для удаление по глобальному ID это возвращать результат в виде словаря <long, bool> с cmids и чтобы проверить что сообщения были удалены нужно отдельно иметь их id в пределах удаляемого диалога и если ты его не знаешь то нужно получить его, ну или просто доверять что сообщение было удалено

Короче прям сложный вопрос как бы с этим проблему решить, создал тикет, но когда исправлено будет и будет ли вообще даже аллах не знает