vk-bot-api
Библиотека для создания чат-ботов ВК.
Установка
npm i --save vk-bot-api
Получение токена
https://oauth.vk.com/authorize?client_id= ID ВАШЕГО ПРИЛОЖЕНИЯ &scope=messages,photos&redirect_uri=http://oauth.vk.com/blank.html&response_type=token
Права доступа:
Право доступа | Зачем |
---|
messages | Отправка, прием сообщений |
photos | Загрузка фотографий |
Данные права обязательны, но можно добавить еще дабы расширить функционал бота
Пример использования
var VkBotApi = require('vk-bot-api')
var bot = new VkBotApi({
token: '<VK_TOKEN>',
prefix: /бот/i
})
bot.onText(/дуров онлайн\?/i, msg => {
bot.API.call('users.get', {
user_ids: 1,
fields: 'online'
}).then(users => {
var durov = users[0]
bot.sendMessage(msg, durov.online ? 'Да' : 'Нет')
})
})
Конструктор бота
Создает событие message
, когда приходит новое сообщение для бота, unhalded
, когда приходят собщения, на которые не сработал ни один обработчик сообщений и дополнительные события chat_create
, chat_title_update
, chat_photo_update
, chat_invite_user
, chat_kick_user
(для бесед)
Параметры:
Параметр | Описание | Тип | По умолчанию |
---|
token | Токен | Строка | |
v | Используемая версия VK API | Число | 5 |
chats | Список id чатов и пользователей, на сообщения которых бот будут отвечать. Если не указывать, то будет отвечать на все сообщения. ID беседы = 2e9 + номер беседы. Например, если указать [1, 2e9+12] , то бот будет отвечать только на сообщения Дурова и чата #12 | Массив | Пуст |
prefix | Имя бота, с которого должны начинаться сообщения. Если не указывать, то будет отвечать на все сообщения. | Регулярное выражение | |
timeout | Таймаут для обращений к VK API. | Число | 5 |
prefixOnlyForGroups | Если true, то префикс будет проверяться только в беседах, а в диалогах с пользователями будет отвечать на все | Логический | false |
LPMessages | Если true, то сообщения будут приходить не в виде объекта сообщения, а в виде массива, который присылает LongPoll - сервер. Иначе, бот сначала получит объект используя API. | Логический | false |
Запросы к VK API
В примере выше вы могли заметить, что мы воспользовались методом Vk API. Запросы делаются так:
bot.API.call('метод', {
ключ: значение
})
Создание команд
Для этого используется функция onText
, принимающая два параметра:
- RegExp, содержащий команду
- Функция, которая выполняется при совпадении
bot.onText(/погода (.*)/, (msg, match) => {
bot.sendMessage(msg, 'В городе ' + match[1] + 'тепло')
})
Отправка сообщений
Параметры:
Параметр | Описание |
---|
peer_id | peer_id |
message | Текст сообщения |
params | Объект с дополнительными параметрами |
bot.sendMessage(2e9 + 12, 'Привет с:', {
'attachment': 'photo100172_166443618'
})
Загрузка фотографий
Выполняется с помощью функции uploadPhoto.
В качестве параметра принимается адрес файла, возвращает объект фотографии (см. photos.saveMessagesPhoto).
bot.uploadPhoto('/home/user/kittens.png')
.then(photo => {
})