Данная статья будет содержать в себе следующие шаги:
1. Установка Python 3.7.3 на Windows.
2. Установка PyCharm и его настройка.
3. Создание проекта и установка библиотеки VK_API
4. Запуск скрипта используя LongPoll VK.
5. Разница между CallBack API и LongPoll
1. Установка Python 3.7.3 на Windows.
Установка не занимает много времени и умений. Переходим на официальный сайт и скачиваем установщик себе на ПК.
Запускаем установщик, обязательно поставьте галочку возле надписи Add Python 3.7 to PATH, так у вас не возникнет проблем при работе с командной строкой Windows.
После установки запускаем командую строку:
И пишем команду:
pip
Если Вы сделали все правильно, то увидите список команд и опций
На этом установка Python успешно завершена. Переходим к установке IDE PyCharm
2. Установка PyCharm и его настройка.
Переходим на сайт и скачиваем среду PyCharm Community, она бесплатная.
После чего устаналвиваем и запускаем PyCharm
Забегая вперед, у меня по умолчанию в настройках программы стоял Python 2.7
Нам нужна последняя версия, открываем File -> Settings... -> Project interpreter и из выпадающего меню выбираем последнюю версию, или добавляем ее туда нажав на Show All…
Теперь можно создавать новый проект.
3. Создание проекта и установка библиотеки VK_API
В Pycharm выбираем: File -> New Project и создаем новый проект, выбрав необходимые настройки:
Теперь создаем новый файл, назовем его new.py, так как Python использует расширение .py (английскими буквами, не путайте) расширение указывать не обязательно.
Пишем наш первый самый простой код:
print("Привет ")
И нажав правой кнопкой мыши по файлу, выбираем: Run 'new'
Все работает. Теперь нам нужно установить библиотеку vk_api, для этого открываем терминал прямо в PyCharm и пишем команду:
pip install vk_api
Installing collected packages: urllib3, chardet, idna, certifi, requests, enum34, six, vk-api
Running setup.py install for vk-api … done
Successfully installed certifi-2019.6.16 chardet-3.0.4 enum34-1.1.6 idna-2.8 requests-2.22.0 six-1.12.0 urllib3-1.25.3 vk-api-11.4.0
Если в конце видите такой текст, библиотека успешно установлена, можно импортировать ее в проект и писать первый код:
# -*- coding: utf-8 -*-
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
def main():
""" Пример использования bots longpoll
"""
vk_session = vk_api.VkApi(token='your_group_token')
longpoll = VkBotLongPoll(vk_session, 'your_group_id')
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение:')
print('Для меня от: ', end='')
print(event.obj.from_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_REPLY:
print('Новое сообщение:')
print('От меня для: ', end='')
print(event.obj.peer_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_TYPING_STATE:
print('Печатает ', end='')
print(event.obj.from_id, end=' ')
print('для ', end='')
print(event.obj.to_id)
print()
elif event.type == VkBotEventType.GROUP_JOIN:
print(event.obj.user_id, end=' ')
print('Вступил в группу!')
print()
elif event.type == VkBotEventType.GROUP_LEAVE:
print(event.obj.user_id, end=' ')
print('Покинул группу!')
print()
else:
print(event.type)
print()
if __name__ == '__main__':
main()
Это код из примера, благодаря нему мы убедимся что сделали все правильно. Вставить его нужно в файл new.py предварительно удалив все оттуда, что мы написали ранее.
4. Запуск скрипта используя LongPoll VK.
Для начала настроим наше сообщество.
Создаем ключ
Копируем ключ и вставляем его в наш скрипт:
Вместо 'your_group_token' указываем ключ сообщества
Вместо 'your_group_id' указываем ID нашего сообщества
Теперь переходим во вкладку Long Poll APIи включаем его
Далее, обязательно включаем тип событий, это частая ошибка при создании ботов, забыв включить события, бот не будет работать! Выбираем все что есть.
Вернемся к нашему коду. Давайте запустим наш скрипт и проверим как он будем обрабатывать события, запускаем скрипт:
Давайте покинем сообщество и снова вступим в него:
В консоли мы сразу увидели последние события. Немного добавим строк в наш код, и научим отвечать наше сообщество сообщением в ЛС на одно из событий:
Импортируем:
from vk_api.utils import get_random_id
После:
longpoll = VkBotLongPoll(vk_session, '176771278')
Добавляем:
vk = vk_session.get_api()
И отправляем сообщение самому пользователю:
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=("Новое сообщение - ", event.obj.text)
)
print('ok')
Полный код:
# -*- coding: utf-8 -*-
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
def main():
""" Пример использования bots longpoll
"""
vk_session = vk_api.VkApi(token='Ттут ваш токен')
longpoll = VkBotLongPoll(vk_session, 'Ид сообщества')
vk = vk_session.get_api()
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение:')
print('Для меня от: ', end='')
print(event.obj.from_id)
print('Текст:', event.obj.text)
print()
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=("Новое сообщение - " + event.obj.text)
)
print('ok')
elif event.type == VkBotEventType.MESSAGE_REPLY:
print('Новое сообщение:')
print('От меня для: ', end='')
print(event.obj.peer_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_TYPING_STATE:
print('Печатает ', end='')
print(event.obj.from_id, end=' ')
print('для ', end='')
print(event.obj.to_id)
print()
elif event.type == VkBotEventType.GROUP_JOIN:
print(event.obj.user_id, end=' ')
print('Вступил в группу!')
print()
elif event.type == VkBotEventType.GROUP_LEAVE:
print(event.obj.user_id, end=' ')
print('Покинул группу!')
print()
else:
print(event.type)
print()
if __name__ == '__main__':
main()
напишем любое сообщение нашему боту и получим ответ:
Как узнать названия других событий? Они будут выводится в консоли, так как в коде используется:
else:
print(event.type)
print()
Тут мы получили 2 события:
VkBotEventType.WALL_POST_NEW - Новый пост
VkBotEventType.GROUP_OFFICERS_EDIT - Выдача админ прав в самой группе
Документация и больше примеров можно посмотреть на . Если Вам интересен этот язык и вы хотите видеть больше статей по Python, пишите в комментарии об этом!
5. Разница между CallBack API и LongPoll
И все же в чем разница между CallBack API и Long Poll API? А разница есть и она большая.
Когда Вы используете CallBack API, ВК сам отправляет Вам происходящее событие на сервер, нам остается только получить его и обработать, у Long Poll API все наоборот, ВК ничего не отправляет, а хранит все события у себя на серверах, Вам нужно самому их получать и обрабатывать, Long Poll API подходит для высоко нагруженных проектов, в идеале советуем использовать оба типа получения событий. На этом наша статья подходит к концу, в следующий раз мы напишем как запустить Long Poll используя PHP, всем хорошего кодинга и настроения.
1. Установка Python 3.7.3 на Windows.
2. Установка PyCharm и его настройка.
3. Создание проекта и установка библиотеки VK_API
4. Запуск скрипта используя LongPoll VK.
5. Разница между CallBack API и LongPoll
1. Установка Python 3.7.3 на Windows.
Установка не занимает много времени и умений. Переходим на официальный сайт и скачиваем установщик себе на ПК.
Запускаем установщик, обязательно поставьте галочку возле надписи Add Python 3.7 to PATH, так у вас не возникнет проблем при работе с командной строкой Windows.
После установки запускаем командую строку:
И пишем команду:
pip
Если Вы сделали все правильно, то увидите список команд и опций
На этом установка Python успешно завершена. Переходим к установке IDE PyCharm
2. Установка PyCharm и его настройка.
Переходим на сайт и скачиваем среду PyCharm Community, она бесплатная.
После чего устаналвиваем и запускаем PyCharm
Забегая вперед, у меня по умолчанию в настройках программы стоял Python 2.7
Нам нужна последняя версия, открываем File -> Settings... -> Project interpreter и из выпадающего меню выбираем последнюю версию, или добавляем ее туда нажав на Show All…
Теперь можно создавать новый проект.
3. Создание проекта и установка библиотеки VK_API
В Pycharm выбираем: File -> New Project и создаем новый проект, выбрав необходимые настройки:
Теперь создаем новый файл, назовем его new.py, так как Python использует расширение .py (английскими буквами, не путайте) расширение указывать не обязательно.
Пишем наш первый самый простой код:
print("Привет ")
И нажав правой кнопкой мыши по файлу, выбираем: Run 'new'
Все работает. Теперь нам нужно установить библиотеку vk_api, для этого открываем терминал прямо в PyCharm и пишем команду:
pip install vk_api
Installing collected packages: urllib3, chardet, idna, certifi, requests, enum34, six, vk-api
Running setup.py install for vk-api … done
Successfully installed certifi-2019.6.16 chardet-3.0.4 enum34-1.1.6 idna-2.8 requests-2.22.0 six-1.12.0 urllib3-1.25.3 vk-api-11.4.0
Если в конце видите такой текст, библиотека успешно установлена, можно импортировать ее в проект и писать первый код:
# -*- coding: utf-8 -*-
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
def main():
""" Пример использования bots longpoll
"""
vk_session = vk_api.VkApi(token='your_group_token')
longpoll = VkBotLongPoll(vk_session, 'your_group_id')
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение:')
print('Для меня от: ', end='')
print(event.obj.from_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_REPLY:
print('Новое сообщение:')
print('От меня для: ', end='')
print(event.obj.peer_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_TYPING_STATE:
print('Печатает ', end='')
print(event.obj.from_id, end=' ')
print('для ', end='')
print(event.obj.to_id)
print()
elif event.type == VkBotEventType.GROUP_JOIN:
print(event.obj.user_id, end=' ')
print('Вступил в группу!')
print()
elif event.type == VkBotEventType.GROUP_LEAVE:
print(event.obj.user_id, end=' ')
print('Покинул группу!')
print()
else:
print(event.type)
print()
if __name__ == '__main__':
main()
Это код из примера, благодаря нему мы убедимся что сделали все правильно. Вставить его нужно в файл new.py предварительно удалив все оттуда, что мы написали ранее.
4. Запуск скрипта используя LongPoll VK.
Для начала настроим наше сообщество.
Создаем ключ
Копируем ключ и вставляем его в наш скрипт:
Вместо 'your_group_token' указываем ключ сообщества
Вместо 'your_group_id' указываем ID нашего сообщества
Теперь переходим во вкладку Long Poll APIи включаем его
Далее, обязательно включаем тип событий, это частая ошибка при создании ботов, забыв включить события, бот не будет работать! Выбираем все что есть.
Вернемся к нашему коду. Давайте запустим наш скрипт и проверим как он будем обрабатывать события, запускаем скрипт:
Давайте покинем сообщество и снова вступим в него:
В консоли мы сразу увидели последние события. Немного добавим строк в наш код, и научим отвечать наше сообщество сообщением в ЛС на одно из событий:
Импортируем:
from vk_api.utils import get_random_id
После:
longpoll = VkBotLongPoll(vk_session, '176771278')
Добавляем:
vk = vk_session.get_api()
И отправляем сообщение самому пользователю:
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=("Новое сообщение - ", event.obj.text)
)
print('ok')
Полный код:
# -*- coding: utf-8 -*-
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
from vk_api.utils import get_random_id
def main():
""" Пример использования bots longpoll
"""
vk_session = vk_api.VkApi(token='Ттут ваш токен')
longpoll = VkBotLongPoll(vk_session, 'Ид сообщества')
vk = vk_session.get_api()
for event in longpoll.listen():
if event.type == VkBotEventType.MESSAGE_NEW:
print('Новое сообщение:')
print('Для меня от: ', end='')
print(event.obj.from_id)
print('Текст:', event.obj.text)
print()
vk.messages.send(
user_id=event.obj.from_id,
random_id=get_random_id(),
message=("Новое сообщение - " + event.obj.text)
)
print('ok')
elif event.type == VkBotEventType.MESSAGE_REPLY:
print('Новое сообщение:')
print('От меня для: ', end='')
print(event.obj.peer_id)
print('Текст:', event.obj.text)
print()
elif event.type == VkBotEventType.MESSAGE_TYPING_STATE:
print('Печатает ', end='')
print(event.obj.from_id, end=' ')
print('для ', end='')
print(event.obj.to_id)
print()
elif event.type == VkBotEventType.GROUP_JOIN:
print(event.obj.user_id, end=' ')
print('Вступил в группу!')
print()
elif event.type == VkBotEventType.GROUP_LEAVE:
print(event.obj.user_id, end=' ')
print('Покинул группу!')
print()
else:
print(event.type)
print()
if __name__ == '__main__':
main()
напишем любое сообщение нашему боту и получим ответ:
Как узнать названия других событий? Они будут выводится в консоли, так как в коде используется:
else:
print(event.type)
print()
Тут мы получили 2 события:
VkBotEventType.WALL_POST_NEW - Новый пост
VkBotEventType.GROUP_OFFICERS_EDIT - Выдача админ прав в самой группе
Документация и больше примеров можно посмотреть на . Если Вам интересен этот язык и вы хотите видеть больше статей по Python, пишите в комментарии об этом!
5. Разница между CallBack API и LongPoll
И все же в чем разница между CallBack API и Long Poll API? А разница есть и она большая.
Когда Вы используете CallBack API, ВК сам отправляет Вам происходящее событие на сервер, нам остается только получить его и обработать, у Long Poll API все наоборот, ВК ничего не отправляет, а хранит все события у себя на серверах, Вам нужно самому их получать и обрабатывать, Long Poll API подходит для высоко нагруженных проектов, в идеале советуем использовать оба типа получения событий. На этом наша статья подходит к концу, в следующий раз мы напишем как запустить Long Poll используя PHP, всем хорошего кодинга и настроения.
Последнее редактирование модератором: