Как написать чат-бота на Python для ВКонтакте за 5 минут

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Для начала вам потребуется:

1) Установить Python 2 или Anaconda для Python 2

2) Установить библиотеку vk_api. Для этого в командной строке надо ввести:

| pip install vk_api

3) Создать текстовый файл, вставить в него полный код (о котором пойдёт речь в самой статье ниже) и назвать, например, bot_vk.py

4) В командной строке написать python <путь к файлу>. Например:

| python /home/bot_vk.py

Автор статьи: Куцев Роман, пользователь habr.com (слог и пометки автора сохранены)

Ниже вы узнаете, как легко можно написать примитивного чат бота для VK, используя API VK. Статья написана для новичков, чтобы показать, что нет ничего сложного в написании ботов на Python (язык программирования).

Авторизация

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

— Как пользователь

— Как сообщество

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

Авторизация в две строчки:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чат-бот готов! Получилось 17 строк кода:

В редакторах типа Sublime Text комментарии, функции и переменные в строках кода выделены разными цветами. Редактор статей ВК такое выделение пока не поддерживает, но чтобы вы смогли скопировать текст кода, разместим его отдельно не скриншотом, а текстом:

# -*- 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'][0]['id']

for item in response['items']:

write_msg(item[u'user_id'],u'Привет, Хабр!')

time.sleep(1)

Остались вопросы? Пишите в комментариях! Постараемся помочь :)

Подпишись, чтобы не пропустить следующую статью! ?

— — — — — — — — — > FAQ Marketing ВКонтакте

Источник: m.vk.com

Комментарии: