node-vk-bot-sdk
Небольшое SDK для создания чат-ботов с использованием Node.JS на платформе сообществ ВКонтакте.
Рекомендуется использовать с версиями VK API выше 5.103.

Установка
$ npm install node-vk-bot-sdk
или
$ yarn add node-vk-bot-sdk
Возможности
- Поддерживает работу с Callback событиями через Express/Koa или LongPoll
- Позволяет добавлять слушатели произвольных событий в сообществе
- Позволяет добавлять обработчики команд в сообщениях через RegExp или строки
- Поддерживает работу с присылаемой полезной нагрузкой и данными о клиенте
- Поддерживает установку middleware для всех получаемых событий
- Поддерживает настройку собственных обработчиков ошибок
Пример использования
const express = require('express');
const { VkBotSdk } = require('node-vk-bot-sdk');
const app = express();
const sdk = new VkBotSdk({
group_id: 0,
secret: '',
confirmation: '',
access_token: ''
});
const bot = sdk.getCallback();
bot.command(/test/, (ctx, params) => {
ctx.reply(`reply to ${ctx.from_id}`);
});
bot.defaultReply((ctx, params) => {
ctx.reply('Default reply');
});
app.use(express.json());
app.all('/callback', bot.eventsCallback);
app.listen(8080);
Другие примеры работы
Context API
ctx.event | string | Тип полученного события |
ctx.data | object | Полученные данные в событии |
ctx.group_id | number | ID сообщества |
ctx.event_id | number | ID события |
ctx.user_id | number | Псевдоним для ctx.from_id |
ctx.from_id | number | ID автора сообщения (ID затрагиваемого пользователя для других событий) |
ctx.peer_id | number | ID дилога (ID затрагиваемого пользователя события для других событий) |
ctx.message | string | Преобразованный текст сообщения (пустая строка для других событий) |
ctx.orig_message | string | Оригинальный текст сообщения |
ctx.client_info | object | Данные о клиенте пользователя или стандартный объект |
ctx.reply(text, attachment, keyboard) | function | Отправляет ответ с текстом, вложениями и клавиатурой |
ctx.replyKeyboard(text, keyboard) | function | Отправляет ответ с текстом и клавиатурой |
ctx.replyAttachment(attachment) | function | Отправляет ответ только с вложениями |
ctx.replyCustom(params) | function | Отправляет ответ с кастомными параметрами |
ctx.isKeyboardSupported() | function | Возвращает информацию из client_info |
ctx.isInlineKeyboardSupported() | function | Возвращает информацию из client_info |
ctx.isCarouselSupported() | function | Возвращает информацию из client_info |