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

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

Тема в разделе "Python", создана пользователем Pro100Xaker5, 10.06.2020.

Загрузка...
Ответов: 0 Просмотров: 402 Ответить в теме
  1. Pro100Xaker5
    Данная статья будет содержать в себе следующие шаги:

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

    1. Установка Python 3.7.3 на Windows.
    Установка не занимает много времени и умений. Переходим на официальный сайт https://www.python.org/downloads/ и скачиваем установщик себе на ПК.
    [​IMG]
    Запускаем установщик, обязательно поставьте галочку возле надписи Add Python 3.7 to PATH, так у вас не возникнет проблем при работе с командной строкой Windows.
    [​IMG]

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

    [​IMG]

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

    [​IMG]
    Если Вы сделали все правильно, то увидите список команд и опций
    [​IMG]
    На этом установка Python успешно завершена. Переходим к установке IDE PyCharm


    2. Установка PyCharm и его настройка.
    Переходим на сайт jetbrains.com/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
    https://vk.com/dev/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
    https://vk.com/dev/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 - Выдача админ прав в самой группе


    Документация и больше примеров можно посмотреть на GitHub. Если Вам интересен этот язык и вы хотите видеть больше статей по Python, пишите в комментарии об этом!


    5. Разница между CallBack API и LongPoll
    И все же в чем разница между CallBack API и Long Poll API? А разница есть и она большая.
    Когда Вы используете CallBack API, ВК сам отправляет Вам происходящее событие на сервер, нам остается только получить его и обработать, у Long Poll API все наоборот, ВК ничего не отправляет, а хранит все события у себя на серверах, Вам нужно самому их получать и обрабатывать, Long Poll API подходит для высоко нагруженных проектов, в идеале советуем использовать оба типа получения событий. На этом наша статья подходит к концу, в следующий раз мы напишем как запустить Long Poll используя PHP, всем хорошего кодинга и настроения.

    Оригинал
    https://kotoff.net/article/23-pytho...bota-vk-i-nastroit-python-dlja-novichkov.html
     
    10.06.2020 Сообщений: 30 Симпатий: 16
В этой теме всего одна страница
Вам, как гостю, ограничены возможности взаимодействия с темами. Пройдите бесплатную регистрацию и откройте для себя море возможностей.