Здравствуйте, в этой статье я хотел бы поговорить как можно удалить сообщения, которые Вы хотите, будем так говорить. Для того, чтобы их удалить нам необходимо знать их идентификатор, то есть просто так по названию, по заголовку, по отправителю мы не сможем его удалить, нам обязательно надо знать идентификатор сообщения, который можно получить при вызове метода — получения всех сообщений — это метод
- messages.get
Когда мы получали с помощью данного метода сообщения, мы получали идентификатор отправителя, само сообщения, так вот там был тег <mid></mid> в формате XML, когда мы получали, так вот, что было заключено в данном теге — это и был идентификатор нашего сообщения, я добавил строчку кода, когда мы получали список сообщений парсинга этого идентификатора и еще один TListBox на вкладку «Сообщения«, где будет отображаться список всех идентификаторов сообщений
Вот таким вот образом я получал список всех идентификаторов сообщений в TListBox
ListBox5.Items.Add(Pars(logVK,'<mid','</mid>',0));
Давайте же теперь поговорим, а какой собственно метод отвечает за удаление сообщений. Хочу сразу сказать, что для удаления сообщений через приложения для него должна стоять битовая маска с правами не меньше 4096. Также хочу сказать, что опять таки в документации API по данному методу написана версия API 2.0, на самом деле 3.0, при 2.0 будет писать, что данный метод не существует или в этом роде. Ну а так все как и раньше, больше ничего не надо придумывать, только создать подпись безопасности в алфавитном порядке или же ошибка — «Неверная подпись«.
Сам метод для удаления сообщений называется
- messages.delete
То есть из названия все понятно, теперь давайте пройдемся по его параметрам.
api_id - идентификатор приложения
sig - подпись безопасности
v - версия API (в документации написана 2.0, на самом деле 3.0)
mid - идентификатор сообщения, которое необходимо удалить
format - XML или JSON
test_mode - если равен 1, то можно делать тестовые запросы к данным приложения
Первые 3 параметра являются обязательными, остальные нет, но очень похожие параметры на параметры подобных методов. Теперь я написал код, для удаления, он выглядит следующим образом
procedure TForm1.Button14Click(Sender: TObject);
var
sig:string;
begin
try
PostVK:=TStringList.Create;
sig:=Pchar(LabelMid.Caption)+'api_id=1918788format=XMLmethod=messages.deletemid='+ListBox5.Items[ListBox5.ItemIndex]+'v=3.0'+Pchar(LabelSecret.Caption);
sig:=md5(sig);
PostVK.Clear;
PostVK.Add('api_id=1918788');
PostVK.Add('sig='+sig);
PostVK.Add('v=3.0');
PostVK.Add('method=messages.delete');
PostVK.Add('mid='+ListBox5.Items[ListBox5.ItemIndex]);
PostVK.Add('format=XML');
PostVK.Add('sid='+Pchar(LabelSid.Caption));
logVK:=IdHTTP1.Post('https://api.vkontakte.ru/api.php',PostVK);
if pos('<response>1</response>',logVK)<>0 then
ShowMessage('Delete message OK')
else
ShowMessage('Not Delete message');
PostVK.Free;
except
on e:Exception do
PostVK.Free;
end;
end;
То есть, если будем возвращен результат 1, то это означает, что сообщение ваше удалено без ошибок, если что-то не так, то возвратится код ошибки. Сообщения у меня удаляет под тем идентификатором, который выделен в TListBox. Вот и все по данному методу, в следующей статье рассмотрим работы со стеной пользователя.