Здравствуйте, в этой статье я хотел бы поговорить как можно удалить сообщения, которые Вы хотите, будем так говорить. Для того, чтобы их удалить нам необходимо знать их идентификатор, то есть просто так по названию, по заголовку, по отправителю мы не сможем его удалить, нам обязательно надо знать идентификатор сообщения, который можно получить при вызове метода — получения всех сообщений — это метод

  • 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('http://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. Вот и все по данному методу, в следующей статье рассмотрим работы со стеной пользователя.

В настоящее время очень важно иметь сайт, а тем более очень хорошо раскрученный. Некоторые не горят желанием заниматься раскруткой сайта из-за нехватки времени, например, но зато есть замечательный сервис seopult — автоматическая раскрутка площадки, которая поможет сделать Ваш сайт более популярным.

Полные исходники проекта качаем тут

Автор статьи - Andrey53

Метки: , , , ,

Оставить комментарий

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*