node-vk-bot-api
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -11,9 +11,11 @@ class Session { | ||
middleware() { | ||
return async (ctx, next) => { | ||
return (ctx, next) => { | ||
const key = this.getSessionKey(ctx) | ||
const session = this.store.get(key) || {} | ||
let session = this.store.get(key) || {} | ||
Object.defineProperty(ctx, this.key, { | ||
get: () => session, | ||
set: value => (session = value), | ||
set: (value) => { | ||
session = value | ||
}, | ||
}) | ||
@@ -20,0 +22,0 @@ |
{ | ||
"name": "node-vk-bot-api", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "🤖 Vk bot framework for Node.js", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -216,4 +216,61 @@ [![node-vk-bot-api](https://img.shields.io/npm/v/node-vk-bot-api.svg?style=flat-square)](https://www.npmjs.com/package/node-vk-bot-api/) | ||
## Stage | ||
Scene manager. | ||
```javascript | ||
const VkBot = require('node-vk-bot-api/lib') | ||
const Scene = require('node-vk-bot-api/lib/scene') | ||
const Session = require('node-vk-bot-api/lib/session') | ||
const Stage = require('node-vk-bot-api/lib/stage') | ||
const bot = new VkBot({ | ||
token: process.env.TOKEN, | ||
group_id: process.env.GROUP_ID, | ||
}) | ||
const scene = new Scene('meet', | ||
(ctx) => { | ||
ctx.scene.next() | ||
ctx.reply('How old are you?') | ||
}, | ||
(ctx) => { | ||
ctx.session.age = +ctx.message.text | ||
ctx.scene.next() | ||
ctx.reply('What is your name?') | ||
}, | ||
(ctx) => { | ||
ctx.session.name = ctx.message.text | ||
ctx.scene.leave() | ||
ctx.reply(`Nice to meet you, ${ctx.session.name} (${ctx.session.age} years old)`) | ||
} | ||
) | ||
const session = new Session() | ||
const stage = new Stage(scene) | ||
bot.use(session.middleware()) | ||
bot.use(stage.middleware()) | ||
bot.command('/meet', (ctx) => { | ||
ctx.scene.enter('meet') | ||
}) | ||
bot.startPolling() | ||
``` | ||
### API | ||
#### Stage | ||
* `constructor(...scenes)`: Register scenes | ||
* `enter(name)`: Enter in scene | ||
* `leave()`: Leave from scene | ||
* `next()`: Go to the next step in scene | ||
#### Scene | ||
* `constructor(name, ...middlewares)`: Create scene | ||
## License | ||
MIT. |
18278
26
405
276
8