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.
npm i vk-subs-activity
Fast start below, continue reading for advanced usage.
const VkSubsActivity = require('vk-subs-activity');
const vkSubsActivity = new VkSubsActivity({
token: process.env.TOKEN, // SERVICE or USER token, NOT group
groupId: process.env.GROUP_ID, // e.g. 147845620
});
vkSubsActivity.updateList()
.then(() => {
console.log(vkSubsActivity.getList());
});
npm test
- constructor(settings)
- .startAutoUpdate(settings, cb)
- .stopAutoUpdate()
- .getList(settings)
- .updateList(settings)
- .clearList()
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,
},
});
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 |
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
.startAutoUpdate({
fromDate: Math.floor(Date.now() / 1000 - 604800),
toDate: Math.floor(Date.now() / 1000),
interval: 300000,
}, Promise.resolve);
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 |
It stops rating auto update
.getList({
count: 0,
plain: false,
sortBy: 'points',
sortDirection: 'desc',
search: undefined,
});
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' } |
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
Clears rating list
MIT