Найти в Дзене
Native coder

Vk-бот на Python с использованием API

Всем привет! В этой статье мы разберём, как сделать сделать бота для ВКонтакте с помощью Python очень просто. Наш бот будет получать сообщение от пользователя и, если оно совпадает с заданным значением, отправлять ответ.
Что понадобится
Python версии 3.0+
Любая среда разработки или редактор кода (мы используем PyCharm 2020.2.3 Pro)
Оглавление

Всем привет! В этой статье мы разберём, как сделать сделать бота для ВКонтакте с помощью Python. Наш бот будет получать сообщение от пользователя и, если оно совпадает с заданным значением, отправлять ответ.

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

  • Python версии 3.0+
  • Любая среда разработки или редактор кода (мы используем PyCharm 2020.2.3 Pro)
  • Любое сообщество Vk, к которому вы имеете доступ от имени администратора.

1) Вконтакте

Для начала нужно зайти в группу Vk и найти нужный нам токен сообщества. Токен - уникальный код, который предоставляет право управлять сообществом владельцу этого токена. Так что не размещайте его на публичных страницах, доступных для всех.

Для этого нам нужно перейти на страницу сообщества, "Управление" => "Работа с API". Что такое API объясняется подробнее в этой статье. Далее нажимаем создать ключ, выбираем все галочки и копируем готовый токен.

-2

2) Код программы

Первым делом проверяем наличие Python на компьютере. Для этого открываем терминал (Консоль разработчика на Windows) и пишем слово "python". В случае успеха, в ответ вы получаете информацию об установленной версии языка. Если терминал выдает ошибку, то нужно установить Python на компьютер. Как это сделать описано здесь.

После установки ЯП, переходим к файлам: нам их потребуется два. Первый файл назовём "tokens.py". В нём будут содержаться токены сообществ, если мы будем использовать не одну группу. Второй файл называется "main.py", в нём будет сам бот.

Как и в любой программе, сначала импортируем библиотеки. Мы будем использовать библиотеку Vk API. Для её установки заходим в терминал и пишем

pip3 install vk_api

После установки библиотеки, нам следует импортировать её и несколько отдельных модулей внутрь самого нашего файла. Для этого пишем

import vk_api
from vk_api.longpoll import VkEventType, VkLongPoll
from tokens import main_token

Следующий шаг - авторизация бота. Здесь-то нам и понадобится наш токен (полный код программы внизу).

vk_session = vk_api.VkApi(token =main_token)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

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

def sender (id, text):
vk_session.method('messages.send' , {'user_id' : id,
'message' : text,
'random_id' : 0 })

Функция принимает 2 значения: "id" и "text". "id" отвечает за внутренний айди пользователя. Его мы берём у него, когда тот пишет в сообщество, а позже ему же отправляем сообщение, за которое отвечает "text".

Хочется заметить наличие параметра "random_id". Этот параметр просто необходим для корректной работы бота, поэтому его просто нужно прописать и присвоить ему значение нуля.

Последний этап программы - прослушка поступления новых сообщений. Пока бот запущен, он будет безостановочно проверять, не появилось ли новое сообщение, а если появилось - отправит заданный ответ пользователю. Так, например, если бот получит сообщение "Привет!", то отправит в ответ "Привет, Мир!". Но пользователь может написать кодовое слово как с большой буквы, так и с маленькой. Для того чтобы избежать ошибок в работе бота, используется встроенный метод Пайтона lower(), который переводит весь текст в нижний регистр.

for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
if event.to_me:
vk = vk_session.get_api()
msg = event.text.lower()
id = event.user_id
user_get = vk.users.get(user_ids =id)
user_get = user_get[0]

if msg == "привет!" :
sender(id, "Привет, Мир!")

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

Бонус: как прикрепить фотографию к сообщению

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

def sender (id, text):
vk_session.method('messages.send' , {'user_id' : id,
'message' : text,
'attachment' : 'photo1_456264771' ,
'random_id' : 0 })

Полный код программы

import vk_api
from vk_api.longpoll import VkEventType, VkLongPoll
from tokens import main_token
vk_session = vk_api.VkApi(token =main_token)
session_api = vk_session.get_api()
longpoll = VkLongPoll(vk_session)
def sender (id, text):
vk_session.method('messages.send' , {'user_id' : id,
'message' : text,
'random_id' : 0 })
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
if event.to_me:
vk = vk_session.get_api()
msg = event.text.lower()
id = event.user_id
user_get = vk.users.get(user_ids =id)
user_get = user_get[0]

if msg == "привет!" :
sender(id, "Привет, Мир!")