Интересно Python и LongPoll VK, или как запустить скрипт ВК и настроит

_ZerO_

Original poster
Member
Сообщения
25
Реакции
12
Посетить сайт
Данная статья будет содержать в себе следующие шаги:

1. Установка Python 3.7.3 на Windows.
2. Установка PyCharm и его настройка.
3. Создание проекта и установка библиотеки VK_API
4. Запуск скрипта используя LongPoll VK.
5. Разница между CallBack API и LongPoll

1. Установка Python 3.7.3 на Windows.
Установка не занимает много времени и умений. Переходим на официальный сайт

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

и скачиваем установщик себе на ПК.
[IMG]

Запускаем установщик, обязательно поставьте галочку возле надписи Add Python 3.7 to PATH, так у вас не возникнет проблем при работе с командной строкой Windows.
[IMG]


После установки запускаем командую строку:

[IMG]


И пишем команду:
pip

[IMG]

Если Вы сделали все правильно, то увидите список команд и опций
[IMG]

На этом установка Python успешно завершена. Переходим к установке IDE PyCharm


2. Установка PyCharm и его настройка.
Переходим на сайт

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

и скачиваем среду PyCharm Community, она бесплатная.
[IMG]

После чего устаналвиваем и запускаем PyCharm

[IMG]

Забегая вперед, у меня по умолчанию в настройках программы стоял Python 2.7
[IMG]

Нам нужна последняя версия, открываем File -> Settings... -> Project interpreter и из выпадающего меню выбираем последнюю версию, или добавляем ее туда нажав на Show All…
[IMG]
[IMG]

Теперь можно создавать новый проект.


3. Создание проекта и установка библиотеки VK_API

В Pycharm выбираем: File -> New Project и создаем новый проект, выбрав необходимые настройки:
[IMG]

Теперь создаем новый файл, назовем его new.py, так как Python использует расширение .py (английскими буквами, не путайте) расширение указывать не обязательно.
[IMG]

Пишем наш первый самый простой код:
print("Привет :)")

И нажав правой кнопкой мыши по файлу, выбираем: Run 'new'
[IMG]

Все работает. Теперь нам нужно установить библиотеку vk_api, для этого открываем терминал прямо в PyCharm и пишем команду:
pip install vk_api

[IMG]

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.
Для начала настроим наше сообщество.
Создаем ключ
[IMG]

Копируем ключ и вставляем его в наш скрипт:
Вместо 'your_group_token' указываем ключ сообщества
Вместо 'your_group_id' указываем ID нашего сообщества

Теперь переходим во вкладку Long Poll APIи включаем его
[IMG]

Далее, обязательно включаем тип событий, это частая ошибка при создании ботов, забыв включить события, бот не будет работать! Выбираем все что есть.
[IMG]



Вернемся к нашему коду. Давайте запустим наш скрипт и проверим как он будем обрабатывать события, запускаем скрипт:
[IMG]

Давайте покинем сообщество и снова вступим в него:
[IMG]

В консоли мы сразу увидели последние события. Немного добавим строк в наш код, и научим отвечать наше сообщество сообщением в ЛС на одно из событий:

Импортируем:
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()

напишем любое сообщение нашему боту и получим ответ:

[IMG]


Как узнать названия других событий? Они будут выводится в консоли, так как в коде используется:
else:
print(event.type)
print()

[IMG]

Тут мы получили 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, всем хорошего кодинга и настроения.

Оригинал

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Последнее редактирование модератором:
  • Like
Реакции: akaBest
A

akaBest

Однозначно лукас, бро. Проделана огромная работа, да статья написана так, что поймет даже школьник!
 
P

PoloLacost

Автору огромный респект! Библиотеку vk_api сам писал? Можно в лс исходный код.
 
Название темы
Автор Заголовок Раздел Ответы Дата
Elliot_service Закрыто Пишу web-проекты | Копии сайтов | Поднимаю сервера | Маркетплейсы | ТГ Боты | Скрипты | Крипта | python, php, js, MySql, html/css Корзина 1
Little_Prince Интересно Напишу проекты [Open Bullet 1|2/Python 3] Бруты/Парсеры/Чекеры 0
CRC29A Ищу работу кодером [C++, Assembler, Python] Услуги дизайнеров/веб-разработчиков 1
C Layer 4 DDOS Tool Python Спам / Флуд / Ддос 0
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 3
A Требуются программисты Python, PHP, C++ Продажа софта 2
L Интересно Реверсим APK (Python-Kivy) Вирусология 4
ВЛАД013 ByPassCaptcha Python Другие ЯП 0
L Интересно Шифруемся используя python (Крипто контейнеры и DPAPI) Другие ЯП 0
Eteriass Интересно Metasploit и Python Уязвимости и взлом 2
G Бомбер для ПК на Python Spam/DDOS/Malware 3
I Python программист для разных задач. Ищу работу. Предлагаю свои услуги. 1
Anorali Свой мини кейлоггер на python. Часть 3 Вирусология 2
Anorali Свой мини кейлоггер на python. Часть 2 Вирусология 0
Anorali Свой мини кейлоггер на python Вирусология 4
G Команда разработчиков - php, python, веб дизайн, программирование Ищу работу. Предлагаю свои услуги. 0
S Интересно CrazyPy - Пак самых нужных модулей для создания вирусов на python Другие ЯП 6
B нужна помощь Python | автоматизация работы в браузере Вопросы и интересы 1
E Интересно Бот с автооплатой на Python Другие ЯП 10
S Интересно Свой мини-рат на python + стиллер хрома v80 Софт от наших юзеров 8
M Декомпиляция Python Другие ЯП 1
M TBomb: Ещё один бомбер на python для termux Другие ЯП 0
M Спам комментариями в ВК {PYTHON} Другие ЯП 2
B [Udemy] Полное руководство по Python. Python Programming Bootcamp (2019) Другие ЯП 4
M Защищаем свой Python скрипт за пару минут Другие ЯП 0
M Разные винлокеры,на VBS и PYTHON Другие ЯП 0
B Клиент-серверная игра на Python Полезные статьи 0
B Python. Полное руководство (2019) Полезные статьи 1
B Основы языка Python (2019) Полезные статьи 0
E Не могу запустить Python на Kali Вопросы и интересы 1
D Кодер ищет проекты/работу [Asm/C/Python] Ищу работу. Предлагаю свои услуги. 0
M СЛИВ КУРСА Development Script-Python для Начинающих (2019) Корзина 4
A Эликсир для программистов на Python Полезные статьи 0
A Что нового в Python 3.8? Полезные статьи 0
A Веб-очистка с BeautifulSoup в Python Другие ЯП 0
G Python для хакера - Часть 4. Свой мини фреймворк. Другие ЯП 1
G Python для хакера - Часть 3. Сбор информации об IP и пробиваем номер сотового. Другие ЯП 1
G Python для хакера - Часть 2. Другие ЯП 1
G Python для хакера - Часть 1. Начало. Другие ЯП 5
R Не изучай синтаксис, изучай псевдокод и программирование! *Python* Другие ЯП 3
S Вирус на Python Софт для работы с текстом/Другой софт 7
S Курсы по c++ , c# , php , python , css , html и т.д. С/C++ 4
G Многопоточный сканер портов на python Полезные статьи 2
G Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
G Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
G Создаём полиалфавитный шифр на Python С/C++ 1
G Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0

Название темы