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. А именно:
Отправка стикера
Все тот же messages.send
Если все получилось, то стикер отправился.
Отправка стикера как граффити
Да-да. И такое бывает. Особенно в последнее время. На сколько мне известно, на данный момент ВКонтакте хранит у себя на серверах 19к стикеров (там почти 20). И все они очень разные, прикольные. Некоторые уже нигде не найти. Но они все равно хранятся. Как в общем-то и любая другая информация в ВК. И это если не считать кастомных стикеров, которые люди загружают как граффити. Разберемся, как они это делают.
Граффити - это обычный документ, загруженный как png изображение. В ВК граффити отображается почти также, как стикер. В некоторых местах, разве что, он бывает в разы больше стикера. А значит и загружать мы его будем как документ.
Воспользуемся компонентом uploader для загрузки файла.
Вот есть еще такие стикосы
Происходит таким же образом, как и отправка любого документа.
Отправляем изображение
- Изображение с жесткого диска
- Изображение с удаленного сервера (по URL)
Оба способа поддерживаются в easyvk, поэтому я покажу оба варианта загрузки.
Для загрузки файла с другого сервера в 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 - между запросами не должно сохраняться состояния. Система по определению не может использовать сессии, потому применение токена актуально для идентификации пользователя.
Получение токена состоит из двух частей: регистрации своего приложения и получение токена в этом приложении.
Создать приложение можно на странице. Указав название приложения, и выбрав его тип.
Я выбираю Standalone , потому что тогда можно будет получить токены с бОльшим возможностями, чем в остальных вариантах (придётся поверить мне на слово, что это правда).
Создав приложение и перейдя на вкладку настроек, будет показано: id приложения, секретный ключ
Теперь, имея id приложения, можно получить токен доступа. Для этого нужно сформировать ссылку, подставив в неё id своего приложения.
где вместо нужно вставить id своего приложения.
а в параметре scope - перечислены разрешения, которыми мы хотим наделить токен, список всех разрешений
Однако здесь, одним из самых важных разрешений является offline , которое создаёт бессрочный токен, не имеющий ограниченного времени жизни.
Если вы не хотите создавать своё приложение, то можете получить токен по ссылке
Перейдя по сформированной ссылке, откроется диалоговое окно, в которому будут зачитаны права показаны разрешения, которыми наделяется токен (чем больше указано scope свойств, тем больше будет этот список)
Подтвердив, произойдёт переадресация на страницу, в адресной строке которой будет access_token , expires_in равный нулю (что логично, учитывая, что мы указывали создание вечного токена)
Я сократил токен для сохранения читабельности. У вас он будет длиннее
Скопировав этот токен, можно делать первые запросы к API.
Как делать запросы к API
Сохраним полученный токен, потому как его нужно будет прикреплять к каждому запросу к VK API.
К слову, даже, если открыть в браузере сформированный адрес, то получим результат
Зная всё это, сделаем первый запрос, на получение всех личных записей со стены. За стену отвечает сущность wall, а метод его get, который возвращает список всех записей со стены пользователя.
И, в итоге, имя метода будет сформировано в виде имени сущности (wall).имя метода (get) - wall.get
Теперь нужно определиться с передаваемыми параметрами (PARAMS). Все доступные, обязательные параметры с описанием можно посмотреть на странице метода.
Я буду передавать owner_id который соответствует id моего пользователя.
По факту же, это поле является необязательным в текущих условиях. Так как по умолчанию, ownwer_id будет проставлен id текущего пользователя.
И, можно было бы просто дописать в виде строки к существующему URL-адресу: . owner_id=120159853
Теперь, осталось только собрать воедино все те части, которые были разобраны выше.
Для этого, можно написать такой код:
При том, что даже токен и версию теперь можно вынести в массив $params , для более централизованной записи.
В итоге, получаем обычный массив записей, который можем обработать как пожелаем
И, исходя из ответа выше, для получения записей выполним:
Резюме
Эта статья должна была показать вам, насколько просто пользоваться API, и какие преимущества открываются. Здесь было продемонстрировано, как получить токен vk, как делать запросы к vk api, на примере получения последних записей со стены пользователя.
И уже имея токен и полученные в этой статье знания - можете работать с любыми методами ВК. Удачи!
Читайте также: