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