nodejs-vk-bot
🤖 Scalable VK bot framework for Node.js, based on Bots Long Poll API and Callback API. Based on node-vk-bot-api
Install
$ npm i nodejs-vk-bot
Simple example
; ; bot.command"/start", ; bot.once"startPoll",;bot.startPolling;
Examples
There's a few simple examples.
Tests
$ npm test
Methods
- constructor(settings)
- .use(...middlewares)
- .command(triggers, ...middlewares)
- .event(triggers, ...middlewares)
- .noCommand(...middlewares)
- .sendMessage(userId, message, attachment, keyboard, sticker)
- .startPolling()
- .on(event, handler)
- .once(event, handler)
- .webhookCallback(...args)
constructor(settings)
Create bot.
// Simple usage; // Advanced usage;
.use(...middlewares)
Add simple middleware.
bot.use;
.command(triggers, ...middlewares)
Add middlewares with triggers for message_new
event.
bot.command"start", ;
.event(triggers, ...middlewares)
Add middlewares with triggers for selected events.
bot.event"message_edit", ;
.noCommand(...middlewares)
Add reserved middlewares without triggers.
bot.noCommand;
.sendMessage(userId, message, attachment, keyboard, sticker)
Send message to user.
// Simple usagebot.sendMessage145003487, "Hello!", "photo1_1"; // Multiple recipientsbot.sendMessage, "Hello!", "photo1_1"; // Advanced usagebot.sendMessage145003487, ; // Send image;bot.sendMessage145003487, 'Look at my images!', file; // file is a png image Buffer
.startPolling(ts)
Start polling ts is timestamp of the last event you can get events after ts is not required
bot.startPollingts;
.on(event, handler)
Set event listener, useful for saving last ts to DataBase
bot.on"poll", ; bot.on"error", ; bot.startPolling;
events
"startPoll" - emits when polling starts "poll" - when poll ends, returns ts "error" - emmits error
.once(event, handler)
Set event listener which excecutes once
bot.once"startPoll", ;bot.startPolling;
Context Methods
.reply(message, attachment, markup, sticker)
Helper method for reply to the current user.
bot.command"start", ;
Markup
Keyboards
Markup.keyboard(buttons, options)
: Create keyboardMarkup.button(label, color, payload)
: Create custom buttonMarkup.oneTime()
: Set oneTime to keyboardMarkup.inline()
: Send keyboard with the message
Simple usage
ctx.reply "Select your sport", null, Markup.keyboard.inline;
Advanced usage
ctx.reply "How are you doing?", null, Markup.keyboard;
.keyboard(buttons, options)
Create keyboard with optional settings.
/* Each string has maximum 2 columns. | one | two | | three | four | | five | six | */ Markup;
/* By default, columns count for each string is 4. | one | two | three | */ Markup.keyboard;
.button(label, color, payload)
Create custom button.
Markup.button"Start", "positive", ;
.oneTime()
Helper method for create one time keyboard.
Markup.keyboard.oneTime;
.inline()
Send keyboard in message box
Markup.keyboard.inline;
Sessions
Store anything for current user in local memory.
Usage
;; ;; bot.usesession.middleware; bot.on; bot.startPolling;
API
Options
key
: Context property name (default:session
)getSessionKey
: Getter for session key
getSessionKey(ctx)
Default ;
Stage
Scene manager.
; ;;;; bot.usesession.middleware;bot.usestage.middleware; bot.command"/meet", ; bot.startPolling;
API
Stage
constructor(...scenes)
: Register scenes
Scene
constructor(name, ...middlewares)
: Create scene.command(triggers, ...middlewares)
: Create commands for scene
Context
ctx.scene.entername, // Enter in scenectx.scene.leave // Leave from scenectx.scene.next // Go to the next step in scenectx.scene.step // Getter for step in scenectx.scene.step= // Setter for step in scene
License
MIT.