
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
node-vk-bot
Advanced tools
Create and control VK bots easily. Works with both profile and group tokens!
npm install --save node-vk-bot
If you are cloning this repository, remember to run npm install
to install dependencies.
// ES6 and TypeScript
import { Bot } from 'node-vk-bot'
// ES5
const { Bot } = require('node-vk-bot')
const bot = new Bot({
token: 'YOUR TOKEN',
prefix: /^Bot[\s,]/
}).start()
bot.get(/Hi|Hello|Hey/i, message => {
const options = { forward_messages: message.id }
bot.send('Hello!', message.peer_id, options)
})
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.
get yourself one:
https://oauth.vk.com/authorize?client_id= YOUR APP ID &scope=photos,messages,offline&display=touch&response_type=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.
The class used to create new bots, it takes a single argument, an options
object.
new Bot({
token: '5a9bdc30ea18ab4a685a8f773642ba0d', // don't even try to use this token
prefix: /^Bot[\s,]/,
prefixOnlyInChats: true,
chats: [
1,
2e9 + 12
],
api: {
v: 5.62, // must be >= 5.38
lang: 'ru'
}
})
Parameter | Type | Required |
---|---|---|
token | String | Yes |
prefix | RexExp | No |
prefixOnlyInChats | Boolean | No |
chats | Array | No |
api | Object | 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
api
is object with API settings: version and language. (Read more)
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.
Listens on specific message matching the RegExp pattern.
bot.get(/Hello/i, msg => {
console.log(msg)
})
The argument passed to callback is a Message
object and result of pattern.exec(text)
.
Sends message.
bot.send('text', peer_id, params)
Upload a photo.
The only parameter is an absolute path to picture. Returns a Promise that resolves with a photo object
bot.uploadPhoto('~/kittens.png').then(photo => {
console.log(photo)
})
Access VK API.
bot.api('users.get', { user_ids: 1 })
Attention! When using execute
method, this function returns full response object. (Because there may be errors and responses in same object).
Stops the bot from listening on updates.
bot.stop()
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!');
}
})
The poll-error event is emitted whenever there is an error occurred in LongPoll.
bot.on('poll-error', error => {
console.error('error occurred on a working with the Long Poll server ' +
`(${util.inspect(error)})`)
})
This event is emitted whenever there's no .get()
listeners matching
bot.on('command-notfound', msg => {
bot.send('What?', msg.peer_id)
})
Message
Object interface Message {
id: number, // message id
peer_id: number, // message's chat peer_id
date: number, // time (in Unixtime format)
title: string, // chat title
body: string, // message text
user_id: number, // sender's ID
attachments: Object // vk.com/dev/using_longpoll - see the attachments section
}
FAQs
Create and control VK bots easily.
The npm package node-vk-bot receives a total of 11 weekly downloads. As such, node-vk-bot popularity was classified as not popular.
We found that node-vk-bot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.