๐ค VK bot framework for Node.js, based on Bots Long Poll API.
$ npm i node-vk-bot-api@2 -S # bots longpoll api
$ npm i node-vk-bot-api@1 -S # user longpoll api
const VkBot = require('node-vk-bot-api')
const bot = new VkBot({
token: process.env.TOKEN,
group_id: process.env.GROUP_ID
})
bot.command('/start', (ctx) => {
ctx.reply('Hello!')
})
bot.startPolling()
There's a few simple examples.
- constructor(settings)
- .use(middleware)
- .command(triggers, ...middlewares)
- .event(triggers, ...middlewares)
- .on(...middlewares)
- .sendMessage(userId, message, attachment, keyboard, sticker)
- .startPolling()
Create bot.
const bot = new VkBot({
token: process.env.TOKEN,
group_id: process.env.GROUP_ID
})
Add simple middleware.
bot.use((ctx, next) => {
ctx.message.timestamp = new Date().getTime()
next()
})
Add middlewares with triggers for message_new
event.
bot.command('start', (ctx) => {
ctx.reply('Hello!')
})
Add middlewares with triggers for selected events.
bot.event('message_edit', (ctx) => {
ctx.reply('Your message was editted')
})
Add reserved middlewares without triggers.
bot.on((ctx) => {
ctx.reply('No commands for you.')
})
Send message to user.
// Simple usage
bot.sendMessage(145003487, 'Hello!', 'photo1_1')
// Advanced usage
bot.sendMessage(145003487, {
message: 'Hello!',
lat: 59.939095,
lng: 30.315868
})
Start polling with given timeout (25 by default).
bot.startPolling()
Helper method for reply to the current user.
bot.command('start', (ctx) => {
ctx.reply('Hello!')
})
Add keyboard in message.
const VkBot = require('node-vk-bot-api')
const Markup = require('node-vk-bot-api/lib/markup')
const bot = new VkBot({
token: process.env.TOKEN,
group_id: process.env.GROUP_ID,
})
bot.command('/sport', (ctx) => {
ctx.reply('Select your sport', null, Markup
.keyboard([
'Football',
'Basketball',
])
.oneTime())
})
bot.command('/mood', (ctx) => {
ctx.reply('How are you doing?', null, Markup
.keyboard([
[
Markup.button('Normally', 'primary'),
],
[
Markup.button('Fine', 'positive'),
Markup.button('Bad', 'negative'),
],
]))
})
Store anything for current user in local memory.
const VkBot = require('node-vk-bot-api')
const Session = require('node-vk-bot-api/lib/session')
const bot = new VkBot({
token: process.env.TOKEN,
group_id: process.env.GROUP_ID,
})
const session = new Session()
bot.use(session.middleware())
bot.on((ctx) => {
ctx.session.counter = ctx.session.counter || 0
ctx.session.counter++
ctx.reply(`You wrote ${ctx.session.counter} messages.`)
})
bot.startPolling()
MIT.