Vk api ответ на сообщение

Обновлено: 04.07.2024

В этой части туториала по VK API мы продолжим с помощью Python разбирать возможности ВК для разработчиков и сделаем небольшого чат-бота-автоответчика.

Теперь нужно написать функции для получения цитаты из Баша.

На основе этого парсера можно приготовить свой собственный, для любимого ресурса. Но давайте добавим еще немного функционала к нашей программе.

Таким образом, набор доступных команд можно будет расширить в соответствие с функциями, которые вы добавите к парсеру или не только к нему.

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

  • Событие message
  • Возможные подтипы new_message , edit_message

Если вы используете свойства контекста напрямую то это может привести к проблемам несовместимости кода в дальнейшем, используйте лучше методы getter'ы

Так как контекст реализует совместимость с несколькими способами получения данных

Инициализация новой инстанции

Проверяет наличие прикреплений

При передаче параметра проверит наличие всех прикреплений указанного типа

Параметр Тип Описание
type string Тип прикрепления

Проверяет наличие текста

Проверяет наличие геолокации

Чтобы обращаться к VK API на Node.js, я всегда использую модуль easyvk. Есть и другие варианты, например, vk-io или node-vk-bot-api. Что использовать, решать вам. Но писать статьи я решил с примерами использования easyvk, так как эта библиотека мне знакома больше, чем любая другая, хотябы потому что я ее автор :)

На сайте-документации модуля написано подробно о том, как его установить и использовать.

Примеры

Чтобы эта и другие мои статьи о VK API не получились как все типичные статьи из интернета, я буду меньше говорить, и больше показывать.

  • Токен пользователя
  • Доступ к секции messages

Теперь сам пример

Как получить токен сообщества самым простым методом, я описал в этой статье

Параметры все те же.

Настройки сообщества

Сервис можно будет найти в меню сообщества

Сервис для приглашений

Это мы уже переходим к разработке мини-чат-бота. Но, конечно, это не он.

Сначала включаем Bots LongPoll (пример будет описан на нем, так как его сможет запустить каждый желающий, позже я буду показывать примеры создания чат-ботов с помощью Callback API тоже)

Для этого заходим в настройки сообщества. И включаем все, что касается LongPoll. А именно:

Настройки сообщества (Работа с API, выставляйте новейшую версию API)

Отправка стикера

Все тот же messages.send

Если все получилось, то стикер отправился.

Отправка стикера как граффити

Да-да. И такое бывает. Особенно в последнее время. На сколько мне известно, на данный момент ВКонтакте хранит у себя на серверах 19к стикеров (там почти 20). И все они очень разные, прикольные. Некоторые уже нигде не найти. Но они все равно хранятся. Как в общем-то и любая другая информация в ВК. И это если не считать кастомных стикеров, которые люди загружают как граффити. Разберемся, как они это делают.

Граффити - это обычный документ, загруженный как png изображение. В ВК граффити отображается почти также, как стикер. В некоторых местах, разве что, он бывает в разы больше стикера. А значит и загружать мы его будем как документ.

Воспользуемся компонентом uploader для загрузки файла.

Вот есть еще такие стикосы

Происходит таким же образом, как и отправка любого документа.

Отправляем изображение

  • Изображение с жесткого диска
  • Изображение с удаленного сервера (по URL)

Оба способа поддерживаются в easyvk, поэтому я покажу оба варианта загрузки.

Panic Kalm memes

Для загрузки файла с другого сервера в easyvk есть метод vk.uploader.uploadFetchedFile()

Для загрузки файла с жесткого диска в easyvk есть метод vk.uploader.uploadFile()

На этом все! Спасибо, что дочитали до конца. Надеюсь, что эта статья вам хоть чем-то помогла и вы научились чему-то новому :)

Получить доступ к API для доступа к пользовательским данным можно в 3 шага:

Итак, первый шаг: создание своего приложения для API Вконтакте.



4 . Потом нужно подтвердить приложение с помощью СМС-кода, отправленного на телефонный номер
5 . Приложение создано и нас встречает страница с информацией о нашем приложении






6 . На открывшейся странице будет в формате JSON представлен токен для доступа в значении ключа access_token:



Вступайте в группу на Facebook и подписывайтесь на мой канал в Telegram, там публикуются интересные статьи про анализ данных и не только.

В недавней статье было рассмотрено, что такое REST API. Почитайте информацию по ссылке - это точно будет полезно.

ВК-API блиц

ВК предоставляет несколько реализаций API:

  • Streaming/Long Poll - позволяет получить данные в реальном времени. Сразу же, при обновлении данных в ВК, мы получаем актуальную информацию, без обновления страницы. Streaming и Long Poll реализуют разные подходы, но суть их одинаковая.
  • Виджеты для сайта - здесь всё просто: скопировал код, без хитрых настроек, и у тебя рабочий виджет на сайте.
  • Open API - работает на клиенте. Так же просто настраивается и используется. Преимуществом является то, что не обязательно иметь сервер для выполнения запросов. Будет работать в обычном HTML + JS.
  • Callback API - позволяет получать данные от самомого ВК, не выполняя запрос. В случае обновления данных, ВК сам нам присылает новые данные. Например, пользователь подписался на нашу группу, и ВК, автоматически пришлёт информацию об этом пользователе нашему скрипту.
  • REST API - позволяет взаимодействовать с данными ВК из скрипта. Позволяет автоматизировать любые пользовательские действия.

Для нас, как для программистов, на данном этапе - интересен REST API. Который позволяет взаимодействовать с пользователями, группами, рекламой, и прочими сущностями. Подробнее, обо всех доступных методах можно почитать здесь.

Для получение доступа к REST API, необходимо иметь специальный ключ vk api token . Это уникальное значение, аналогично логину и паролю - идентифицирует пользователя, от имени которого выполняются запросы.

Как гласит 2 правило проектирования REST API - между запросами не должно сохраняться состояния. Система по определению не может использовать сессии, потому применение токена актуально для идентификации пользователя.

Получение токена состоит из двух частей: регистрации своего приложения и получение токена в этом приложении.

create_app

Создать приложение можно на странице. Указав название приложения, и выбрав его тип.
Я выбираю Standalone , потому что тогда можно будет получить токены с бОльшим возможностями, чем в остальных вариантах (придётся поверить мне на слово, что это правда).

vk-api-config

Создав приложение и перейдя на вкладку настроек, будет показано: id приложения, секретный ключ

Теперь, имея id приложения, можно получить токен доступа. Для этого нужно сформировать ссылку, подставив в неё id своего приложения.

где вместо нужно вставить id своего приложения.
а в параметре scope - перечислены разрешения, которыми мы хотим наделить токен, список всех разрешений
Однако здесь, одним из самых важных разрешений является offline , которое создаёт бессрочный токен, не имеющий ограниченного времени жизни.

Если вы не хотите создавать своё приложение, то можете получить токен по ссылке

Перейдя по сформированной ссылке, откроется диалоговое окно, в которому будут зачитаны права показаны разрешения, которыми наделяется токен (чем больше указано scope свойств, тем больше будет этот список)

Подтвердив, произойдёт переадресация на страницу, в адресной строке которой будет access_token , expires_in равный нулю (что логично, учитывая, что мы указывали создание вечного токена)

Я сократил токен для сохранения читабельности. У вас он будет длиннее

Скопировав этот токен, можно делать первые запросы к API.

Как делать запросы к API

Сохраним полученный токен, потому как его нужно будет прикреплять к каждому запросу к VK API.

К слову, даже, если открыть в браузере сформированный адрес, то получим результат

Зная всё это, сделаем первый запрос, на получение всех личных записей со стены. За стену отвечает сущность wall, а метод его get, который возвращает список всех записей со стены пользователя.
И, в итоге, имя метода будет сформировано в виде имени сущности (wall).имя метода (get) - wall.get

api-method-params

Теперь нужно определиться с передаваемыми параметрами (PARAMS). Все доступные, обязательные параметры с описанием можно посмотреть на странице метода.

Я буду передавать owner_id который соответствует id моего пользователя.

По факту же, это поле является необязательным в текущих условиях. Так как по умолчанию, ownwer_id будет проставлен id текущего пользователя.

И, можно было бы просто дописать в виде строки к существующему URL-адресу: . owner_id=120159853

Теперь, осталось только собрать воедино все те части, которые были разобраны выше.
Для этого, можно написать такой код:

При том, что даже токен и версию теперь можно вынести в массив $params , для более централизованной записи.

resule-json

В итоге, получаем обычный массив записей, который можем обработать как пожелаем

И, исходя из ответа выше, для получения записей выполним:

Резюме

Эта статья должна была показать вам, насколько просто пользоваться API, и какие преимущества открываются. Здесь было продемонстрировано, как получить токен vk, как делать запросы к vk api, на примере получения последних записей со стены пользователя.
И уже имея токен и полученные в этой статье знания - можете работать с любыми методами ВК. Удачи!

Читайте также: