VK group subscribers activity monitoring (Node.js)
This module helps you to count activity of your VK group subscribers (likes, comments etc). And easy to integrate with your bot or something else.
Getting Started
Install
npm i vk-subs-activity
Usage
Fast start below, continue reading for advanced usage.
const VkSubsActivity = require('vk-subs-activity');
const vkSubsActivity = new VkSubsActivity({
token: process.env.TOKEN,
groupId: process.env.GROUP_ID,
});
vkSubsActivity.updateList()
.then(() => {
console.log(vkSubsActivity.getList());
});
Tests
npm test
Methods
constructor(settings)
Default config
new VkSubsActivity({
token: undefined,
groupId: undefined,
lang: 'ru',
adminsIds: [],
likes: {
valueOfUsual: 1,
valueOfTop: 2,
countOfFirstAreTop: 5,
valueOfLikedAllPosts: 5,
ignoreAdmins: true,
},
comments: {
valueOfUsual: 3,
valueOfTop: 4,
countOfFirstAreTop: 5,
ignoreShorterThan: 10,
valueOfLikesFromOthers: 5,
ignoreAdmins: true,
},
});
Properties description
Property | Type | Default | Description |
---|
token | string | undefined | VK Service or User access_token |
groupId | number | undefined | Group id for monitoring |
lang | string | ru | VK api data language |
adminsIds | number[] | [] | Activity of this users don't affect in rating (they will not get any points for activity) |
likes.valueOfUsual | number | 1 | Number of points user receive for "usual" like (not in the first N likes) |
likes.valueOfTop | number | 2 | Number of points user receive for "top" like (in the first N likes) |
likes.countOfFirstAreTop | number | 5 | How many first likes will get extra points |
likes.valueOfLikedAllPosts | number | 5 | User will get extra points if he liked all posts at the update interval fromDate - toDate |
likes.ignoreAdmins | boolean | true | Admins likes will not affect in rating |
comments.valueOfUsual | number | 3 | Number of points user receive for "usual" comment (not in the first N comments) |
comments.valueOfTop | number | 4 | Number of points user receive for "top" comment (in the first N comments) |
comments.countOfFirstAreTop | number | 5 | How many first comments will get extra points |
comments.ignoreShorterThan | number | 10 | Users who leave short comment, will not get points for this |
comments.valueOfLikesFromOthers | number | 5 | Number of points user receive if someone likes his comment |
comments.ignoreAdmins | boolean | true | Admins comments will not affect in rating |
.startAutoUpdate(settings, cb)
Starts rating auto update in selected interval. Clears rating list before each iteration to prevent double data rewriting. Optionally, you can pass a function as second argument, and it will executes every time when subs-activity-list is updated
Default config
.startAutoUpdate({
fromDate: Math.floor(Date.now() / 1000 - 604800),
toDate: Math.floor(Date.now() / 1000),
interval: 300000,
}, Promise.resolve);
Properties description
Property | Type | Default | Description |
---|
fromDate | number | Math.floor(Date.now() / 1000 - 604800) (Unix time 7 days ago) | Only group posts newer than this Unix time affects rating |
toDate | number | Math.floor(Date.now() / 1000) (Unix time now) | Only group posts older than this Unix time affects rating |
interval | number | 300000 (ms) | Interval of rating update |
.stopAutoUpdate()
It stops rating auto update
.getList(settings)
Default config
.getList({
count: 0,
plain: false,
sortBy: 'points',
sortDirection: 'desc',
search: undefined,
});
Properties description
Property | Type | Default | Description |
---|
count | number | 0 (all) | Number of rating items will return |
plain | boolean | false | Rating list will return as string |
sortBy | string | points | Rating list will sort by (id / firstName / lastName / usualLikes / topLikes / totalLikes / usualComments / topComments / totalComments / commentsLikesFromOthers / likedAllPosts / points / place) |
sortDirection | string | desc | Rating list sort direction ascending or descending (asc / desc) |
search | object | undefined (all) | Will return only rating items which match search query. E.g. search: { id: 123456 } or search: { firstName: 'Ivan' } |
.updateList(settings)
Manual update of the rating list. Note that .updateList() will not clear rating list before update
Settings are equal to .startAutoUpdate(settings, cb), but without interval
property
.clearList()
Clears rating list
License
MIT