Как стать автором
Обновить

Создание бота для ВКонтакте на языке програмирования Python

Создание бота для ВКонтакте на языке программирования Python


Для начала нам надо установить нужные библиотеки, а точнее vk_api.

В начале разберемся как получить токен для нашего бота.

  1. Создайте сообщество
  2. В меню справа выберете вкладку «Управление»
  3. Во вкладке «Сообщения» выберете «Настройки для ботов»
  4. Включите возможности бота
  5. В меню справа выберете вкладку «Настройки», в которой выберете «Работа с API»
  6. Создайте ключ доступа
  7. Разрешите, что вам нужно

Теперь (по желанию, но рекомендую) создадим файл config.py, в нем сделаем переменную TOKEN и помести в нее наш токен в кавычках.

Начинаем писать код


Импортируем что нужно:

import json
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
#для тех кто поместил токен в config.py
from config import TOKEN

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

vk_session = vk_api.VkApi(token=TOKEN) #для людей поместивших токен в config
vk_api.VkApi(token='Ваш токен') #Для остальных
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)

Далее пишем цикл, в котором будут обрабатываться сообщения:

for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id

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

Для того что бы отправить сообщение надо в аиц добавить код:

def sender(id, text):
    vk.messages.send(user_id=id, message=text, random_id=0)

Теперь в цикл мы можем добавить обработку сообщений:

if msg == 'hi':
                sender('hello', id) #Первым аргументом передаем сообщение, которое он скажет, а вторым id человека


Учимся отправлять стикеры и фотографии


Для того что бы отправлять стикеры в аиц добавляем:

def send_stick(id, number):
    vk.messages.send(user_id=id, sticker_id=number, random_id=0)

Теперь надо получить id стикера для этого надо:

  1. Правой кнопкой мыши нажать на стикер (неважно есть ли он у вас или нет)
  2. Иследуем элемент
  3. (то что подчеркнуто красным и есть айди стикера)

Далее в цикл добавляем строку:

send_stick(id, "id стикера без кавычек")

Что бы отправить фотографию надо в первых что бы фотография была либо у вас на устройстве либо во Вконтакте (я расскажу только о втором).

Для того что бы найти айди фото надо открыть фотографию и в ссылке скопировать текст начиная со слова photo включительно и до % не включительно, например:photo-190960458_457239182

Далее в аиц добавляем:

def send_photo(id, url):
    vk.messages.send(user_id=id, attachment=url, random_id=0)

а в цикл добавляем:

send_photo(id, 'photo337511104_457242663')

Создание клавиатуры


Для начала импортируем
from vk_api.keyboard import VkKeyboard, VkKeyboardColor

Потом идет описание самой клавиатуры

keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Привет', color=VkKeyboardColor.SECONDARY)
keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE)

Далее добавляем в функцию которую будем вызывать keyboard=keyboard.get_keyboard()

def sender(id, text):
    vk.messages.send(user_id=id, message=text, random_id=0, keyboard=keyboard.get_keyboard())

Теперь при вызове данной функции будет появляться клавиатура

Весь код, который был показан в данном уроке:
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
from config import vk_token
from vk_api.keyboard import VkKeyboard, VkKeyboardColor

vk_session = vk_api.VkApi(token=vk_token)
vk = vk_session.get_api()
longpoll = VkLongPoll(vk_session)


# Создание клавиатуры
keyboard = VkKeyboard(one_time=True)
keyboard.add_button('Привет', color=VkKeyboardColor.SECONDARY)
keyboard.add_button('Клавиатура', color=VkKeyboardColor.POSITIVE)


# Отправление сообщений с клавиатурой
def sender(id, text):
    vk.messages.send(user_id=id, message=text, random_id=0, keyboard=keyboard.get_keyboard())


# Отправление сообщений без клавиатуры
def sender_1(id, text):
    vk.messages.send(user_id=id, message=text, random_id=0)


# Отправление стикеров
def send_stick(id, number):
    vk.messages.send(user_id=id, sticker_id=number, random_id=0)


# Отправление фото
def send_photo(id, url):
    vk.messages.send(user_id=id, attachment=url, random_id=0)


for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        if event.to_me:
            msg = event.text.lower()
            id = event.user_id
            if msg == 'hi':
                sender(id, 'hello')
                send_stick(id, 112)
                send_photo(id, 'photo337511104_457242663')


Удачи в ваших начинаниях!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.