Интересно 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

akaBest

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

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