Pull to refresh

Создание бота для ВКонтакте на языке програмирования 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')


Удачи в ваших начинаниях!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.