Бот для VK на Python с MySQL за час ч.1

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

В этом туториале я хочу показать как сделать максимально простого бота с довольно большим базовым функционалом.

Итак начнем.

Что нам понадобится?

Python начиная с версии 2.7. Весь код тестировался на версии 2.7.16 и 3.7.3.
Модуль PyMySQL.
Модуль vk_api.
Модуль requests
Группа Вконтакте. Внимание! Бот будет работать именно со стороны группы, а не стороны аккаунта человека.
База данных(включая данные о пользователе и т.д)

Подключение

Для начала подключим все библиотеки:

import vk_api from vk_api.utils import get_random_id from from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import pymysql.cursors import requests 

Теперь можно приступить к настройке бота и базы данных.

Именно в моем случае все данные находятся в файле config.py. Вы же можете прописать их где угодно. На функционал то никак не повлияет.

Подключение базы данных

Для этого создадим функцию при помощи модуля PyMySQL:

 def getConnection():     connection = pymysql.connect(host='you_host',                                  user='you_user',                                  password='you_password',                                  db='you_db'                                  charset='utf8mb4',                                  cursorclass=mymysql.cursors.DictCursor)     return connection 

Эта функция будет возвращать данные для дальнейшей работы с базой данных. Соответственно подставляем свои данные где видим «you_».

Настройка подключения к боту

Для начала нам нужно перейти в настройки своей группы:

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

Перейти во вкладку «Long Poll API» и включить его. А так же выбрать последнюю из доступных версий

Перейти в «Типы событий» и так же включить все, что вам понадобится. Я включил например все

И последнее. Перейти в «Сообщения» > «Настройки для бота» и включить возможность ботов. Теперь можно перейти к самой программе.

Подключение бота к группе

Теперь пропишем подключение бота к long poll и проверку действий со стороны Вконтакте:

 vk_session = vk_api.VkApi(token="Ваш ключ, который вы создали на странице настроек") #пример  vk_session = vk_api.VkApi(token = "a6f87v8c9a9sa87a7af9a0f9f9v8a6s6c5b5m6n8bds09asc8d7b87d87bd87n" vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, "id вашей группы Вконтакте") #пример longpoll = VkBotLongPoll(vk_session, "637182735") for event in longpoll.listen(): #Проверка действий     if event.type == VkBotEventType.MESSAGE_NEW: 

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

Работа с ботом

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

     if event.type == VkBotEventType.MESSAGE_NEW: # последняя строчка         #проверяем не пустое ли сообщение нам пришло         if event.obj.text != '':              #проверяем пришло сообщение от пользователя или нет             if event.from_user:                 vk.messages.send(                         user_id=event.obj.from_id,                         random_id=get_random_id(),                         message=event.obj.text) 

Теперь про метод vk.messages.send().Это стандартный метод модуля vk_api. О методах можно будет прочитать на официальной документации Вконтакте(ссылка будет ниже).

Он позволяет отправлять сообщения пользователям.

Аргумент user_id указывает какому аккаунту это сообщение это надо отправить. В нашем случае event.obj.from_id указывает на аккаунт, который только что нам отправил сообщение. То есть мы отправляем сообщение тому человеку, который отправил его нам.
Указывать этот аргумент обязательно!

Аргумент random_id нужен для того, чтобы Вконтакте не отправлял сообщения по 2 раза. Указывать этот аргумент обязательно!

Аргумент message собственно указывает какое сообщение мы должны отправить. В event.obj.text хранится информация о том, какой текст в сообщении мы получили. Этот аргумент тоже обязателен.

Больше об аргументах к этому методу можно прочитать на официальной странице Вконтакте.

Запуск

Теперь наш бот готов и мы можем его запустить. После запуска можно смело писать боту и увидеть результат.

Итог

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

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

Спасибо за чтение!

Полезные ресурсы

Официальная документация api Вконтакте
Официальная страница по модулю PyMySQL

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *