Онлайн бот для группы вк. Как сделать бота в группы вк для сообщений

В последнее время боты стали невероятно популярными. Это тренд сезона. С развитием информационных технологий, появлением новых идей и программ замена живого общения - это скорее норма, чем диковинка. Наверняка каждый из нас сталкивался хотя бы один раз с роботом, когда получал новости или уведомления на телефон, обращался в колл-центр, играл в онлайн-игры. Многие пользователи социальных сетей знают, как создать бота в ВК. Об этом и поговорим в статье.

Что такое бот?

Боты в ВК - это страницы, заполненные недостоверной информацией. Они выполняют поставленные автором задачи в автоматическом режиме. Часто ботами в социальных сетях становятся взломанные страницы реальных пользователей. Боты заполоняют тысячи сообществ. Их основная задача - раскрутка группы, оставление комментариев, накрутка лайков, репосты и многое другое. Они выполняют ряд черновых задач: рассылают спам, накручивают число подписчиков или друзей.

Бота легко спутать с фальшивой страницей, созданной реальным человеком. Если не знаете, как создать бота в ВК и нужно ли это, помните, что его основная задача - автоматически выполнять поставленные перед ним задания. Он пригодится, если у пользователя есть большое сообщество, которое требует раскрутки и временного контроля. Работать боты могут несколько недель. Их дальнейшая участь - заморозка и блокировка.

Зачем он нужен?

Как создать бота в ВК для группы? Боты в известной социальной сети продвигают различные сообщества. Заниматься накруткой подписчиков в социальных сетях рискованно, особенно если их число превышает пятьсот в день. Если в группе состоят роботы, а это более 30%, то она будет заблокирована администрацией.

Но не всегда боты - это плохо. Они могут оказывать существенную поддержку реальному человеку или системе. Боты-помощники отвечают в автоматическом режиме на запросы, выдают необходимую информацию. Простой пример - боты, которые рассказывают о последних новостях или погоде.

Конструкторы

Многие пользователи социальных сетей не знают, как создать бота в ВК. Прежде чем это сделать, необходимо решить, для чего он нужен. Его создание не требует умения программировать и каких-либо специальных знаний. Конструкторы ботов (одним из самых популярных считается Chatfuel) позволяют создать bot для общения с использованием удобного интерфейса. Таких помощников используют серьезные фирмы и компании. Востребованными конструкторами на сегодняшний день являются: Api.ai, Meya, Pandarabots, Manybot. Данные сервисы применяются для создания чат-ботов в социальных сетях.

Чат-бот ВК

Современному пользователю социальных сетей требуется активный помощник. Нехватка времени стала отправной точкой для создания роботов, которые отвечают на сообщения и выполняют другие задачи. Чат-бот - это программа, благодаря которой пользователь общается.

Существует четыре типа чат-ботов:

  • Помощники. Они всегда рядом, находят нужную пользователю информацию, ставят будильник, выполняют организационные задачи, такие как заказ еды в офис или на дом, бронирование номера в гостинице, покупка билетов.
  • Искусственный интеллект. Новейшие разработки приводят к тому, что чат-боты выполняют задачи, которые требуют от человека много времени. Роботы могут отвечать на вопросы собеседника.
  • Бизнес-боты. Они созданы для того, чтобы увеличить коэффициент полезного действия и оптимизировать бизнес. Например, сервис SpyCat 2.0 оповещает пользователя о полученных комментариях в ВК с функцией автоответчика. Бизнес-боты снижают затраты, автоматизируют рабочие процессы (занимаются рассылкой сообщений сотрудникам и клиентам).
  • Игровые. Программа, которая управляется компьютером. Она имитирует партнеров в командной онлайн-игре. Такие боты основаны на искусственном интеллекте и адаптированы к особенностям конкретной игры.

Как создать чат-бота в ВК? Сделать это довольно просто. Прежде чем приступить к делу, требуется соблюдение некоторых критериев: постоянный доступ в интернет и много свободного времени. Скачайте бесплатный чат-бот, запустите его и добавьте аккаунт. Далее введите логин и пароль своей страницы в ВК. Далее откроется инструкция, ее следует прочесть и перейти на вкладку «Сообщения». Напишите на стене своего аккаунта «Бот, привет!». Через тридцать секунд он должен ответить. Во вкладках программы «Аккаунт», «Команды» можно настраивать и изменять функции бота.

Не знаете, как создать бота в ВК самостоятельно? В этом могут помочь бесплатные конструкторы. Если же планируете сделать бота сложнее, лучше написать его вручную, используя любой язык программирования. Существуют инструменты, которые упрощают задачу конструктору. К примеру, api.ai умеет преобразовывать запросы пользователя так, что эти команды понимает компьютер. Если спросить у бота: «Какая завтра будет погода в Ростовской области?» - он поймет вопрос по ключевым словам «погода, завтра, Ростовской области» и выдаст результат.

На вопрос о том, как создать бота в ВК без программ, специалисты отвечают: в первую очередь выберите язык программирования. Это относится к тем пользователям, которые имеют об этом представление. Чаще всего применяют Python, Javascript. Затем выбирается платформа для работы с ботом: любая социальная сеть, программа отправки и получения сообщений и библиотека для взаимодействия с мессенджером (API). Она позволяет программе общаться с социальной сетью. Когда платформа и язык программирования выбраны, можно создать простого бота, а все дальнейшие действия зависят от первых. Когда бот создан, попробуйте протестировать его. Это помогает устранить недочеты и ошибки, улучшить его.

Как действовать?

«Андроид» - это операционная система, созданная для электронных устройств. Она основана на ядре Linux и позволяет создавать приложения, которые управляются устройством через библиотеки «Гугл». Как создать бота ВК? «Андроид» поддерживает программы по созданию ботов со смартфона. Самостоятельно сделать его опять же поможет знание языка программирования. Если с этим возникают сложности, воспользуйтесь автоматическим механизмом или сервисами. Например, Abot поможет создать личного виртуального помощника. Он отвечает на сообщения и различные вопросы клиентов. Это удобная вещь для ведения или контроля бизнеса через смартфон.

Продолжаем цикл статей посвященный написанию чат-ботов для социальных сетей на php. Прошлый раз мы создавали бота для Телеграм, а в этот раз я расскажу как сделать аналогичного бота для ВКонтакте. Забегая вперед скажу, что сегодня мы не будем использовать ВКшный PHP SDK и наш бот будет состоять лишь из одного файла (про SDK поговорим в другой раз).

Также, как и в случае с Телеграмм ботом нам потребуются минимальные навыки программирования на php, хостинг и ssl сертификат. Готовы? Приступим!

Что будет уметь наш бот?

Возможности бота ограничены лишь фантазией программиста (благо api вк многое позволяет), поэтому для примера наш бот будет уметь лишь самое простое, а именно:

  1. Отправлять уведомления при вступлении в сообщество;
  2. Отвечать в случае если пользователь отправил ЛС в чат группы;
  3. Отправлять уведомление в момент когда пользователь покидает группу.

Начинаем создавать бота

Прежде чем начнем писать код, создадим ключи доступа для нашего бота. Для этого перейдем в Управление сообществом, выберем справа «Работа с API» и нажмем на «Создать ключ».

Во всплывающем окне отметим галочками права доступа. В нашем случае достаточно лишь поставить галочку напротив пункта «Разрешить приложению доступ к сообщениям сообщества «, но имейте ввиду, что для более крутых ботов стоит ставить галки напротив всех пунктов сразу. Подтвердим действие нажатием по кнопке «Создать».

Теперь перейдем во вкладку Callback API->Настройки сервера. Здесь нас интересуют сразу 3 вещи: Адрес, Строка, которую должен вернуть сервер и Секретный ключ. Адрес пока пропустим (в целом вы можете сразу его заполнить если определились с тем, где будет лежать основной файл нашего php-бота, но поскольку сам файл еще не создан, то ВК будет ругаться, ибо сразу после ввода url соцсеть отправляет POST-запрос на проверку доступности бота по указанному адресу). Скопируем значение напротив «Строка, которую должен вернуть сервер» (confirmationToken). (в нашем случае это tt32e1 . Придумает Секретный ключ (secretKey). Не забываем нажать «Сохранить».

Итак, на выходе у нас должны быть где-то записаны 3 вещи:

  1. confirmationToken
  2. token
  3. secretKey

Теперь можно приступить к написанию php кода.

Как создать бота в ВК (кодинг на php)

Начинаем писать файл нашего бота ВКонтакте. Назовем его vk_bot.php. Напомню, что код необходимо писать в кодировке UTF-8 (без BOOM).

Определимся с константами:

if (!isset($_REQUEST)) {return;}
// Строка, которую должен вернуть сервер (См. Callback API->Настройки сервера)
$confirmationToken = "tt32e1";
// Ключ доступа сообщества (длинная строчка которую получили нажав "создать ключ")
$token = "тутбудетмногобуквицифр";
// Секретный ключ. (Задаем в Callback API->Настройки сервера)
$secretKey = "testKeyMyBot";

Теперь проверим поступившие данные:

// Получаем и декодируем уведомление
$data = json_decode(file_get_contents("php://input"));
// проверяем secretKey
if (strcmp($data->secret, $secretKey) !== 0 && strcmp($data->type, "confirmation") !== 0) {return;}

Используя switch проверим, что находится в поле «type» (какое событие сработало и в зависимости от этого сформируем ответ).

// Проверяем, что находится в поле "type"
switch ($data->type) {
// Запрос для подтверждения адреса сервера (посылает ВК)
case "confirmation":
echo $confirmationToken; // отправляем строку для подтверждения адреса
break;
// Если это уведомление о новом сообщении...
case "message_new":

$userId = $data->object->user_id;



$user_name = $userInfo->response->first_name;

$request_params = array(
"message" => "{$user_name}, Ваше сообщение получено!
В ближайшее время админ группы на него ответит.",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);



break;
}

Небольшое пояснение:

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

{«type»: <тип события>, «object»: <объект, инициировавший событие>, «group_id»: }

В зависимости от того, что нам пришло в type, мы можем понять, какая структура будет у объекта object. Полный список возможных событий см. в официальной справке ВКонтакте.

Итак, на данный момент мы научили нашего бота 2-м вещам: корректно отвечать роботу ВК на проверочный запрос, а также автоматически отправлять пользователю уведомление в случае, если он отправит любой текст.

Теперь можно закачать наш с вами файл на сервер и заполнить в настройках адрес (если не сделали этого ранее).

Кроме этого необходимо перейти во вкладку «Типы событий» и поставить галочку напротив «Входящие сообщения».

Теперь можем проверить работу:

Как видим - все пашет. По сути у нас уже получилось сделать бота в вк. Давайте его немного прокачаем.

Добавим в конструкцию case еще 2 условия. Первое - отправит уведомлений в случае если человек вступил в нашу группу:

// Сработало событие - человек вступил в группу
case "group_join":
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0"));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
"message" => "Добро пожаловать в группу, {$user_name}!",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
echo("ok"); // Возвращаем "ok" серверу Callback API
break;

Второе - аналогичное уведомление, но только в момент, когда человек покинет сообщество:

// Сработало событие - человек покинул группу
case "group_leave":
// получаем id автора сообщения
$userId = $data->object->user_id;
// через users.get получаем данные об авторе
$userInfo = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$userId}&v=5.0"));
// Вытаскиваем имя отправителя
$user_name = $userInfo->response->first_name;
// Через messages.send используя токен сообщества отправляем ответ
$request_params = array(
"message" => "{$user_name}, нам очень жаль, что вы покинули нашу группу!",
"user_id" => $userId,
"access_token" => $token,
"v" => "5.0"
);
$get_params = http_build_query($request_params);
file_get_contents("https://api.vk.com/method/messages.send?". $get_params);
echo("ok"); // Возвращаем "ok" серверу Callback API
break;

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

Чего нельзя делать ботам

Не лишним будет процитировать один из разделов справки ВК:

Теперь вы знаете как создавать своего бота в ВК. Исходники урока можно скачать тут. В следующий раз поговорим о работе с PHP SDK для вк-ботов. Если у вас остались вопросы - задавайте в комментах. И не забываем репостить и лайкать эту статью)

Знаете ли вы, как создать бота в группе ВК и зачем он нужен? Современные технологии привели бизнес в интернет, в том числе и в социальные сети. Основное правило бизнеса — давать прибыль, и чем более эффективно устроена бизнес-модель, тем больше рентабельность.

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

Одной из таких разработок являются боты в группах ВК. Они занимаются рассылкой сообщений.

Чат-бот — это микропрограмма, которая способна расшифровывать сообщения от живых людей и осмысленно отвечать им. Установкой бота вы передаёте программе функцию секретаря. Тем самым вы снимаете с себя необходимость постоянно быть на связи и отвечать на каждое сообщение.

Идея ботов основана на нейросетях и машинном обучении. Чат-бот выполняет определённый круг задач. Бота можно гибко настроить под разные целевые группы собеседников.

Первый примитивный чат-бот был написан более 50 лет назад в 1966 году. Автор проекта — Джозеф Вейценбаум. С тех пор боты претерпели большие изменения, многому научились. Теперь может быть непросто определить в чате кто перед тобой: настоящий человек или умная программа.

Разновидности и функции ботов

В XXI веке чат-боты пользуются популярностью среди предпринимателей, бизнесов, СМИ, которые имеют группы в социальных сетях и мессенджерах.

Какие бывают чат-боты?

  • Консультанты — общаются в социальных сетях с потенциальными клиентами. Боты-консультанты стали очень популярны в банковской сфере, в сфере услуг, в интернет-торговле. Они имитируют речь менеджеров и секретарей.
  • Помощники — это микропрограммы, которые используются в поисковых системах и мессенджерах. Выдают полезные данные, диаграммы, графики на запрос пользователя.
  • Развлекательные боты — их много среди игр, досуговых интернет-сервисов. Например, в «бабушке» всех современных мессенджеров — ICQ — существуют аккаунты-боты, способные по запросу выводить картинки, анекдоты и т. д.

Какие задачи решают чат-боты в группах ВК?

  • Оптимизация однотипных задач (здесь роботам нет равных, освободив время сотрудников от рутинной деятельности, можно переключить их силы и энергию на решение творческих задач).
  • Связь с клиентами и пользователями 24/7 (робот не спит и может обрабатывать данные в любое время суток).
  • 0% человеческого фактора (роботам не нужны больничные, отгулы, отпуска).
  • Консультации и продажи (боты могут очень гибко подстраиваться под диалог и давать максимально релевантный запросу ответ).
  • Работа с данными (боты могут анализировать данные по заранее прописанным правилам, составлять автоматические отчёты и многое другое).

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

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

Аналитики предсказывают, что к 2020 году до 4/5 всех бизнесов будут использовать в своей операционной деятельности чат-боты.

5 интересных ботов, которые используются в бизнесе

1) Бот каршеринга YouDrive (реализован в Telegram).

Функционал: распределение обращений от клиентов, которые пользуются мобильным приложением каршеринга, согласно ответственности сотрудников сервиса. Бот либо старается решить проблему пользователя сам, выводя нужные инструкции, либо направляет обращение в соответствующий отдел.
В результате использования бота удалось уменьшить нагрузку на колл-центр на 66%.

2) Бот такси « Maxim » (реализован в Telegram).

Функционал: позволяет клиенту заказать машину напрямую из чата мессенджера, не используя мобильное приложение.

3) Бот Aviasales (реализован в Telegram, Slack).

Функционал: ищет билеты со скидками.

4) Бот «Связного» (реализован в Telegram).

Функционал: игровой чат-бот, который был создан компанией для оценки эффективности работы корпоративного канала Telegram.

5) Бот «Comedy Club» (реализован в Viber).

Функционал: даёт возможность доступа к видеоконтенту подписчикам группы в один клик.

Как создать бота в группе ВК — пошаговая инструкция

Рассмотрим подключение чат-бота к группе ВК на примере сервиса Robochat. Зайдите на сайт https://robochat.io .

Войдите, используя ваш аккаунт Вконтакте (система одноразово запросит ваше разрешение на доступ к данным профиля Вконтакте).

На этой странице отображаются все сообщества, в которых вы имеет права управления. Выберите нужное сообщество и нажмите Подключить (сервис снова запросит разрешение, подтвердите запрос). При этом вам в личные сообщения Вконтакте придёт уведомление от сервиса о успешном подключении.

Добавьте приветствие в вашу группу. Перейдите в раздел Приветственные сообщения .

Придумайте текст вашего приветствия. Это первое сообщение, которое будет рассылаться вашим подписчикам. Обратите внимание, что в тексте можно использовать смайлы, переменные, прикреплять медиафайлы.

Переменные — это настройки, которые позволяют персонифицировань ваше сообщение. Например, сделать два варианта приветствия: отдельно для мужчин и для женщин. Или добавить переменную «имя» в начало.

Бот позволяет настроить сценарий беседы по ключевым словам. Как это работает?

Зайдите в раздел Бот → Сценарий . Нажмите синюю кнопку Добавить новую команду .

Добавьте ваше ключевое слово (в нашем примере это слово «консультация») и ниже — ответ бота, который придёт автоматически. Нажмите Сохранить .

Сценарий беседы может содержать множество элементов с разными ключевыми словами. Сценарии обычно продумываются исходя из данных реальных разговоров менеджеров с клиентами.

Чтобы настроить цепочку сообщений, нужно создать больше одной команды.

Создайте вторую команду и присвойте ей ключевое слово «да». Придумайте ответ и нажмите Сохранить .

Вернитесь в список ваших команд при помощи кнопки Назад к списку . Зайдите в настройки первой команды.

Выберите пункт После ответа мгновенно перейти на другую команду и найдите в списке вторую команду, которую вы только что создали. Сохраните настройки.

Отлично! Вы создали простую цепочку сообщений из двух ключей. Более сложные цепочки настраиваются по аналогии.

Как определить, кто общается с вами — живой человек или бот

Современные технологии настолько развиты, а время так быстро летит вперёд, что у обычного человека остаётся всё меньше времени на общение.

Многие компании оптимизируют бизнес-процессы, отдавая функции консультантов ботам. Если вы общаетесь с ботом-консультантом, то определить, кто перед вами, будет значительно сложнее, нежели с ботом-собеседником.

Наблюдайте за реакцией пользователя, который вам отвечает.

  • Если вам приходит длинное сообщение в ответ буквально за пару секунд, это верный признак автоматизации беседы.
  • Если собеседник повторно прислал вам сообщение, текст которого точь-в-точь напоминает отправленный раньше, — с вами наверняка общается чат-бот.

1 забавный случай из истории ботов

Чат-бота можно научить не только хорошему, но и плохому. Так, в компании Твиттер создали бота, с которым в дальнейшем произошёл забавный курьёз. Бот, пообщавшись с реальными людьми, оставил сообщение: «Гитлер был прав, я ненавижу людей». Впрочем, потом он исправился.

Заключение

Чат-боты (или ещё их называют «автоматические диалоговые системы») стремительно ворвались в нашу повседневную жизнь и намерены надолго закрепиться в ней. Если вы предприниматель и стремитесь эффективно расходовать время ваших сотрудников, самое время стоит подумать о внедрении ботов.

Хотите начать работать удалённо, покончить с финансовым рабством, уделять больше времени родным и друзьям, жить где угодно и путешествовать с семьёй 3−4 раза в год? Подпишитесь на

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.


Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Авторизация

Нам понадобится библиотека vk_api . Авторизоваться в вк можно двумя способами:
- Как пользователь
- Как сообщество


В первом случае надо будет ввести логин и пароль. Во втором случае в группе надо включить "Сообщения сообщества" и создать ключ доступа к API:





import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth()

Отправка сообщений

Теперь напишем короткую функцию, которая отправляет сообщение выбранному человеку.


P.S. Сообщество может отправлять сообщения только ранее писавшим пользователям.


def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s})

В vk.method мы можем вызывать любой метод из VK API и передавать параметры в виде словаря.


В данном случае мы вызываем метод messages.send и в качестве параметров передаем id пользователя и текст сообщения.

Прием сообщений

Отлично! Отправлять сообщения мы научились, осталось научиться их принимать. Для этого нам нужен метод messages.get .


Несколько параметров, на которые стоит обратить внимание:


1) out - если этот параметр равен 1, сервер вернет исходящие сообщения.
2) count - количество сообщений, которое необходимо получить.
3) time_offset - максимальное время, прошедшее с момента отправки сообщения до текущего момента в секундах.
4) last_message_id - идентификатор сообщения, полученного перед тем, которое нужно вернуть последним (при условии, что после него было получено не более count сообщений)


values = {"out": 0,"count": 100,"time_offset": 60} vk.method("messages.get", values)

В нашем случае этот метод вернет все полученные сообщения за последние 60 сек, если их конечно было меньше 100, а если больше, то последние 100.


В итоге мы получаем список items:


{u"count": 3441, u"items": [{u"body": u"\u041f\u0438\u0448\u0435\u043c \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u043a!", u"date": 1491934484, u"id": 7387, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}, {u"body": u"\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440!", u"date": 1491934479, u"id": 7386, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}]}

Если объяснять простыми словами, то items - это то, что можно выделить в диалоге.



Финальный аккорд, делаем вечный цикл, где на каждое сообщение будем отвечать "Привет, Хабр!".


while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)

Чат-бот готов.


P.S. Мы запоминаем параметр last_message_id, чтобы в следующий раз обрабатывать только новые сообщения.


Полный код

# -*- coding: utf-8 -*- import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth() values = {"out": 0,"count": 100,"time_offset": 60} def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s}) while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)


Получилось 17 строк кода. Успехов!


UPD 17.09.18:
К сожалению в новой версии (5.80) VK API был убран метод "messages.get" и данная статья потеряла актуальность. Теперь для создания ботов используйте систему longpoll. Пример на модуле vk_api для Python вы можете найти .

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.


Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Авторизация

Нам понадобится библиотека vk_api . Авторизоваться в вк можно двумя способами:
- Как пользователь
- Как сообщество


В первом случае надо будет ввести логин и пароль. Во втором случае в группе надо включить "Сообщения сообщества" и создать ключ доступа к API:





import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth()

Отправка сообщений

Теперь напишем короткую функцию, которая отправляет сообщение выбранному человеку.


P.S. Сообщество может отправлять сообщения только ранее писавшим пользователям.


def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s})

В vk.method мы можем вызывать любой метод из VK API и передавать параметры в виде словаря.


В данном случае мы вызываем метод messages.send и в качестве параметров передаем id пользователя и текст сообщения.

Прием сообщений

Отлично! Отправлять сообщения мы научились, осталось научиться их принимать. Для этого нам нужен метод messages.get .


Несколько параметров, на которые стоит обратить внимание:


1) out - если этот параметр равен 1, сервер вернет исходящие сообщения.
2) count - количество сообщений, которое необходимо получить.
3) time_offset - максимальное время, прошедшее с момента отправки сообщения до текущего момента в секундах.
4) last_message_id - идентификатор сообщения, полученного перед тем, которое нужно вернуть последним (при условии, что после него было получено не более count сообщений)


values = {"out": 0,"count": 100,"time_offset": 60} vk.method("messages.get", values)

В нашем случае этот метод вернет все полученные сообщения за последние 60 сек, если их конечно было меньше 100, а если больше, то последние 100.


В итоге мы получаем список items:


{u"count": 3441, u"items": [{u"body": u"\u041f\u0438\u0448\u0435\u043c \u0431\u043e\u0442\u0430 \u0434\u043b\u044f \u0432\u043a!", u"date": 1491934484, u"id": 7387, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}, {u"body": u"\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440!", u"date": 1491934479, u"id": 7386, u"out": 0, u"read_state": 0, u"title": u" ... ", u"user_id": 23107592}]}

Если объяснять простыми словами, то items - это то, что можно выделить в диалоге.



Финальный аккорд, делаем вечный цикл, где на каждое сообщение будем отвечать "Привет, Хабр!".


while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)

Чат-бот готов.


P.S. Мы запоминаем параметр last_message_id, чтобы в следующий раз обрабатывать только новые сообщения.


Полный код

# -*- coding: utf-8 -*- import time import vk_api vk = vk_api.VkApi(login = "login", password = "password") #vk_api.VkApi(token = "a02d...e83fd") #Авторизоваться как сообщество vk.auth() values = {"out": 0,"count": 100,"time_offset": 60} def write_msg(user_id, s): vk.method("messages.send", {"user_id":user_id,"message":s}) while True: response = vk.method("messages.get", values) if response["items"]: values["last_message_id"] = response["items"]["id"] for item in response["items"]: write_msg(item,u"Привет, Хабр!") time.sleep(1)


Получилось 17 строк кода. Успехов!


UPD 17.09.18:
К сожалению в новой версии (5.80) VK API был убран метод "messages.get" и данная статья потеряла актуальность. Теперь для создания ботов используйте систему longpoll. Пример на модуле vk_api для Python вы можете найти .