No Image

Чат бот vk api python

СОДЕРЖАНИЕ
5 просмотров
11 марта 2020

Создание основы для работы бота будет состоять из следующих этапов:

  1. Создание бота в ВК
  2. Генерирование API- ключа
  3. Создание программы бота через LongPoolVK

Для кого эта статья?

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

Что есть в этой статье?

Создание основы бота. После этого его можно будет запрограммировать как-угодно. Автоматизировать какую-то рутину или использовать как собеседник.

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

Добавление функции передачи погоды. Научим бота говорить нам погоду.

Создание бота в ВК

Начнем мы с создания бота, а именно группу в ВК.

Для это нужно зайти в «группы» → «создать сообщество».

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

На открывшейся странице настроек, выберите «Работа с API»

Далее, необходимо создать API-ключ:

Затем выберите нужные вам параметры с доступом для вашего API-ключа:

Скорее всего, вам придётся подтверждать действие в ВК с помощью мобильного телефона. Затем скопируйте полученный API-ключ где-нибудь в файл. Он нам еще понадобится. Выглядит он так:

Затем нужно разрешить сообщения. Для этого переходим в «сообщения» и включаем их:

Приступим к программной части бота

Мы не будем реализовывать его через запросы к ВК, а если быть точнее, просто используем библиотеку VkLongPool, которая сделает это за нас.

Читайте также:  Как изменить пароль на wifi роутере билайн

Для этого необходима библиотека vk_api. Установим его через pip:

Но лично я работаю с виртуальным окружением Anaconda. С этим зачастую возникают проблемы при первой работе. Обычно проблема в том, что система не распознают команду «python». А решается эта проблема путем добавления его в PATH.

Приступим к самому коду:

Импортируем нужные модули:

Затем пропишем легкий и понятный код:

Функция write_msg получает id пользователя ВК , которому оно отправит сообщение и собственно само сообщение .

Авторизовавшись как сообщество и настроив longpool:

Войдем в основной цикл:

В нем мы циклически будем проверять на наличие event-ов. А получить тип event-а сможем с помощью event.type.

После этого получив сообщение от пользователя сможем отправить ему соответствующее письмо с помощью уже созданной функции write_msg.

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

Теперь приступим к более реальному программированию

Создадим класс VkBot в файле vk_bot.py , который будет служить нам ботом.

И добавим туда метод с помощью которого можно получить имя пользователя через vk id.

Это делается с помощью beatifulsoup4.

Устанавливаем если его нет:

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

Измените параметр _get_weather на нужный город, в последствии этот метод можно будет вызывать с указанием города, а по умолчанию будет ваше указанное значение.

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

Читайте также:  Яндекс словарь с английского на русский

Создадим основной метод new_message, который будет обрабатывать сообщение пользователя и возвращать ответ:

Теперь вернемся к запускаемому файлу:

Импортируем класс нашего бота:

Изменим основной наш цикл:

То есть теперь мы будем передавать полученное сообщение объекту бота, который вернет нам нужный ответ.

Это усложнение программы просто необходимо, если вы хотите дальше улучшить функционал бота:

Создайте отдельные пакеты и классы для каждой функции _get_time и _get_weather. Организуйте наследование с общего класса. И каждую новую функцию определяйте в отдельных классах, лучше всего, конечно, еще и разделить на пакеты.

Добавьте словарь с ключом идентификатора пользователя и значением объекта бота. Таким образом, не придется каждый раз в цикле создавать объект бота. К тому же, это обеспечит пользование несколькими пользователями сразу в сложных конструкциях.

Таким образом, выбрав хорошую архитектуру кода, вы сможете создать многофункционального бота.

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

Вы же можете редактировать бота под себя.

Основной проект бота (улучшенный) на GH:

Также, может быть, если надо сделаю статьи на тему «Управлением через ВК компьютером», «Архитектуру бота», «Хостинг сервера с телефона». Все эти упомянутые функции есть в основном проекте. Если есть вопросы можете писать, отвечу по мере желания. О желаемых статьях также пишите в личку.

Как сделать так, чтобы бот возвращал мне название беседы, из которой пришла соответствующая команда

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

Посмотрите другие вопросы с метками python python-3.x vkontakte-api или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Читайте также:  Датчики дыма на батарейках

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.12.20.35703

vk = vk_api.VkApi(token=api_token)
long_poll = VkBotLongPoll(vk, group_id)
vk_api = vk.get_api()

# api_token – API токен, который мы ранее создали
# group_id – id сообщества-бота

смотрим, что получилось

for event in self.long_poll.listen():
print(event)

Советую делать на callback. В настройках группы указываешь, что можно добавлять бота в беседы. Версию бота ставь 5.80+. В беседе дай боту администратора. Теперь тебе на сервер будет прилетать примерно такой json

from_id – id человека
peer_id – id беседы
обработал сообщение, и отправил его в peer_id. Как-то так

Но для callback нужно иметь сервер или хостинг, да и питон на нем трудно запустить, поэтому советую присмотреться к этой библиотеке на php. И вот кстати в этой статье можешь посмотреть как настраивается callback

Комментировать
5 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector