VK BOTS
Create and control VK bots easily.
npm install --save node-vk-bot
If you are cloning this repository, remember to run npm install
to install dependencies.
Example
import Bot from 'node-vk-bot'
const Bot = require('node-vk-bot')
const bot = new Bot({
token: 'YOUR TOKEN',
prefix: /^Bot[\s,]/
})
bot
.start()
.get(/Hi|Hello|Hey/i, message => {
const forward = { forward_messages: message.id }
bot.send('Hello!', message.peer_id, forward)
})
Documentation
Getting Started
To get updates from the server, we use polling.
In the example above you can see a super simple VK Bot. This bot will answer our greetings, that's all.
Let's explain the code, it's pretty simple.
- First of all, you have to import the library.
- Then I create a bot instance, with my token.
- By calling
bot.start()
the bot starts polling updates from the server. - Then I simply listen on messages which pass the RegExp test, when I get such message, Then I send a new message with text 'Hello' to that chat with a forwarded message.
The API is simple as possible, still, if you have any suggestions about simplifying the API, please fill an issue.
Bot
The class used to create new bots, it takes a single argument, an options
object.
new Bot({
token: '5a9bdc30ea18ab4a685a8f773642ba0d',
prefix: /^Bot[\s,]/,
prefixOnlyInChats: true,
chats: [
1,
2e9 + 12
]
})
Parameter | Type | Requried |
---|
token | String | Yes |
prefix | RexExp | No |
prefixOnlyInChats | Boolean | No |
chats | Array | No |
If prefix
is set, the bot will work only with messages with prefix match. (if prefixOnlyInChats
is true
, then prefix will be checked only for messages from group chats)
If chats
is set, the bot will work only with messages from these chats
Methods
start
Starts polling updates from API.
Emits an update
event after getting updates with the response from server.
Update examples.
See poll.js
for more info.
get
Listens on specific message matching the pattern which can be an string or a regexp.
In case of an string, the message should "start" with the string, that is, the string is converted to new RegExp('^' + string)
. (Attention: it'll not work with prefix)
bot.get(/Hello/i, msg => {
console.log(msg)
})
The argument passed to callback is a Message
object and result of patter.exec(text)
.
send
Sends message.
bot.send('text', peer_id, params)
uploadPhoto
Upload a photo.
The only parameter is a path to picture.
Returns a Promise that resolves with a photo object
bot.uploadPhoto('~/kittens.png').then(photo => {
console.log(photo)
})
api
Access VK API.
bot.api('users.get', { user_ids: 1 })
stop
Stops the bot from listening on updates.
bot.stop()
Events
update
The update event is emitted whenever there is a response from LongPoll.
bot.on('update', update => {
if (update[7].from === 1) {
console.log('Got an message from Pavel Durov!');
}
})
#####command-notfound
This event is emitted whenever there's no .get()
listeners matching
bot.on('command-notfound', msg => {
bot.send('What?', msg.peer_id)
}
The Message
Object
{
id: Number,
peer_id: Number,
date: Number,
title: String,
body: String,
user_id: Number
attachments: Object
}