Как удалить сообщение vk api

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

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

Вот таким вот образом я получал список всех идентификаторов сообщений в TListBox

ListBox5.Items.Add(Pars(logVK,’,»,0));

Давайте же теперь поговорим, а какой собственно метод отвечает за удаление сообщений. Хочу сразу сказать, что для удаления сообщений через приложения для него должна стоять битовая маска с правами не меньше 4096. Также хочу сказать, что опять таки в документации API по данному методу написана версия API 2.0, на самом деле 3.0, при 2.0 будет писать, что данный метод не существует или в этом роде. Ну а так все как и раньше, больше ничего не надо придумывать, только создать подпись безопасности в алфавитном порядке или же ошибка — «Неверная подпись«.

КАК УДАЛИТЬ СООБЩЕНИЕ В VK? | Ugly Duckling — ОНЛАЙН ЗНАКОМСТВА

Сам метод для удаления сообщений называется

То есть из названия все понятно, теперь давайте пройдемся по его параметрам.

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(‘1’,logVK)<>0 then ShowMessage(‘Delete message OK’) else ShowMessage(‘Not Delete message’); PostVK.Free; except on e:Exception do PostVK.Free; end; end;

Еще по теме:  Vk установить на телевизор LG

То есть, если будем возвращен результат 1, то это означает, что сообщение ваше удалено без ошибок, если что-то не так, то возвратится код ошибки. Сообщения у меня удаляет под тем идентификатором, который выделен в TListBox. Вот и все по данному методу, в следующей статье рассмотрим работы со стеной пользователя.

Как в КОНТАКТЕ восстановить удаленную переписку. КАК в ВК удалить для ВСЕХ уже удаленное сообщение

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

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

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

Похожие записи

  • Проект VK API в Delphi. Поиск видеозаписей в ВК
  • Проект VK API в Delphi. Получение сообщений со стены
  • Проект VK API в Delphi. Отправляем сообщение на стену
  • Проект VK API в Delphi. Добавляем комментарий к видеозаписи
  • Проект VK API в Delphi. Удаление сообщений со стены

Источник: zaokomtek.ru

Vk_api как удалять сообщения?

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

import vk_api from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType from config import main_token vk_session = vk_api.VkApi(token = main_token) longpoll = VkBotLongPoll(vk_session, 216348252) def sender(id, text, url_photo): vk_session.method(‘messages.send’, ) def deleter(id, all, cm): vk_session.method(‘messages.delete’, ) for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: if event.from_chat: msg = event.object.message[‘text’].lower() user_id = event.object.message[‘from_id’] #print(id) if user_id == 284314870: sender(id, ‘клоун говорит: ‘ + msg, ‘photo-183216693_457272612’) if user_id == 234870156: sender(id, ‘клоун говорит: ‘ + msg, ‘photo-183216693_457272612’) if user_id == 150303672 and sender(id, ‘кочка говорит: ‘ + msg, ‘photo-89416274_456239190’) if user_id == 150303672 and 4: sender(id, ‘клоун говорит: ‘ + msg, ‘photo-183216693_457272612’) if user_id == 163674999: sender(id, ‘клоун говорит: ‘ + msg, ‘photo-183216693_457272612’) #if user_id == 137872130: #cmds = event.object.cmids # sender(id, ‘клоун говорит: ‘ + msg, ‘photo-183216693_457272612’) # deleter(id, 0, cmds)

  • Вопрос задан 06 окт. 2022
  • 492 просмотра
Еще по теме:  В связи с тем что Вконтакте

Источник: qna.habr.com

Логирование и удаление комментариев, блокировка пользователей в группе ВК через бота | PHP

Сегодня напишем бота, который будет логировать все оставляемые комментарии в вашей группе. Также с помощью inline-кнопок добавим возможность быстрой блокировки пользователей и удаления всего того, что они успели понаписать.

Шаг 1: Ключ доступа сообщества

Начинаем с подготовки сообщества:

1. Включите сообщения сообщества, возможности для ботов и разрешите добавлять сообщество в чаты:

2. Создайте ключ, поставив галочку напротив сообщений сообщества:

3. Далее укажите ссылку на файл с ботом, скопируйте и сохраните у себя строку, которую должен вернуть сервер (она нам пригодится, когда начнём писать код). Также не забудьте нажать кнопку «Подтвердить» по окончании работ по созданию скрипта:

4. Добавьте в типы событий входящие сообщения и добавление/редактирование комментариев:

Первый этап уже позади, переходим к следующему.

Шаг 2: Ключ доступа пользователя

Для удаления комментариев и выдачи банов потребуется ещё один ключ — пользовательский ключ. Получать его мы будет в Standalone-приложении через Implicit Flow:

1. Перейдите по ссылке https://vk.com/apps?act=manage, нажмите кнопку «Создать». Придумайте любое название и поставьте галочку напротив Standalone-приложения:

2. Далее вы должны составить запрос на получение токена:

https://oauth.vk.com/authorize?client_id=*******redirect_uri=https://oauth.vk.com/blank.htmlresponse_type=token // Тут продолжим >

Авторизируемся с помощью двух ключей, которые мы получили ранее, а также инициализируем основные переменные для работы с ботом:

$vk = DigitalStarvk_apivk_api::create( VK_KEY, VERSION )->setConfirm( ACCESS_KEY ); // Авторизация с помощью ключа сообщества $vk_user = DigitalStarvk_apivk_api::create( VK_USER_KEY, VERSION ); // Авторизация с помощью ключа пользователя $vk->initVars( $peer_id, $message, $payload, $vk_id, $type, $data ); // Инициализация переменных

Далее вставляем конструкцию if-elseif, с помощью которой будем определять тип события. Всего событий будет 3: новое сообщение (messge_new), новый комментарий (wall_reply_new), редактирование комментария (wall_reply_edit):

if ( $type == ‘message_new’ ) < // Тут продолжим писать код >else if ( $type == ‘wall_reply_new’ or $type == ‘wall_reply_edit’ ) < // Тут продолжим писать код >

Итак, начнём с логирования, дабы соблюдать не запутаться в командах и кнопках:

Теперь перехожу к обработке команд на удаление комментариев и блокировку пользователей. Сразу добавляю команду ‘/айди’ для быстрого просмотра айди беседы:

if ( $type == ‘message_new’ ) < if ( $message == ‘/айди’ and $peer_id >2000000000 ) < $vk->sendMessage( $peer_id, $peer_id ); > // Тут продолжим >
if ( $type == ‘message_new’ ) < if ( $message == ‘/айди’ and $peer_id >2000000000 ) < $vk->sendMessage( $peer_id, $peer_id ); > if ( isset( $data->object->payload ) ) $payload = json_decode( $data->object->payload, true ); else $payload = null; $payload = $payload[‘command’]; // Тут продолжим >

Еще по теме:  Как сделать в ВК чтобы было написано был в сети недавно

Если payload не пустой, значит пользователь использовал кнопки. Соответственно, необходимо обработать это нажатие. Напомню, что команды кнопок имеют у нас следующий вид: действие_айди-пользователя_айди-комментария. Поэтому нужно разбить эту строку на массив с помощью функции explode():

if ( $type == ‘message_new’ ) < if ( $message == ‘/айди’ and $peer_id >2000000000 ) < $vk->sendMessage( $peer_id, $peer_id ); > if ( isset( $data->object->payload ) ) $payload = json_decode( $data->object->payload, true ); else $payload = null; $payload = $payload[‘command’]; if ( $payload !== null ) < $command = explode( ‘_’, $payload ); // Тут продолжим >>
if ( $command[0] == ‘del’ ) // Если была нажата кнопка ‘Удалить’ < try < $vk_user->request( ‘wall.deleteComment’, $params = [ ‘owner_id’ => $command[1], ‘comment_id’ => $command[2] ] ); // Удаление комментария $vk->sendMessage( CONF_LOG_ID, ‘Комментарий удалён’ ); // Отправление в беседу сбщ о том, что комментарий был успешно удалён > catch ( DigitalStarvk_apiVkApiException $e ) < $vk->sendMessage( CONF_LOG_ID, ‘Произошла ошибка. Возможно, комментарий уже удалён.’ ); // Уведомление об ошибке > >

Блокировка пользователя с удалением его комментария:

else if ( $command[0] == ‘ban’ ) // Если была нажата кнопка ‘Забанить’ < try < $vk_user->request( ‘wall.deleteComment’, $params = [ ‘owner_id’ => $command[1], ‘comment_id’ => $command[2] ] ); // Удаление комментария $vk_user->request( ‘groups.ban’, $params = [ ‘group_id’ => GROUP_ID, ‘owner_id’ => $command[3], ‘comment’ => ‘*Причина*’, ‘comment_visible’ => 1 ] ); // Бан пользователя, $vk->sendMessage( CONF_LOG_ID, ‘Пользователь заблокирован’ ); > catch ( DigitalStarvk_apiVkApiException $e ) < $vk->sendMessage( CONF_LOG_ID, ‘Произошла ошибка. Возможно, пользователь уже заблокирован или его комментарий был удалён.’ ); > >

Хочу обратить внимание на строку с занесением юзера в ЧС:

$vk_user->request( ‘groups.ban’, $params = [ ‘group_id’ => GROUP_ID, ‘owner_id’ => $command[3], ‘comment’ => ‘*Причина бла бла*’, ‘comment_visible’ => 1 ] );

В параметре ‘comment’ указывается причина блокировки. В параметре ‘comment_visible’ — значение 1, если пользователю будет видна причина, значение 0 — если нет. Так вот, причину можно либо сразу вписать какую-то стандартную на все случаи жизни, либо удалить оба этих параметра из строки (они необязательны).

Шаг 4: Смотрим, как работает

На этом, пожалуй, всё. Архив с исходниками прикреплён ниже.

  • 5id15
  • 06.07.2022
  • 3 176
  • 0
  • 2

Источник: kotoff.net

Рейтинг
( Пока оценок нет )
Загрузка ...