Count activity of VK group subscribers, sum up and convert to points
npm install vk-subs-activityThis 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.
`javascript
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()
#### constructor(settings)
##### Default config
`javascript`
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 |number
groupId | | undefined | Group id for monitoringstring
lang | | ru | VK api data languagenumber[]
adminsIds | | [] | Activity of this users don't affect in rating (they will not get any points for activity)number
likes.valueOfUsual | | 1 | Number of points user receive for "usual" like (not in the first N likes)number
likes.valueOfTop | | 2 | Number of points user receive for "top" like (in the first N likes)number
likes.countOfFirstAreTop | | 5 | How many first likes will get extra pointsnumber
likes.valueOfLikedAllPosts | | 5 | User will get extra points if he liked all posts at the update interval fromDate - toDateboolean
likes.ignoreAdmins | | true | Admins likes will not affect in ratingnumber
comments.valueOfUsual | | 3 | Number of points user receive for "usual" comment (not in the first N comments)number
comments.valueOfTop | | 4 | Number of points user receive for "top" comment (in the first N comments)number
comments.countOfFirstAreTop | | 5 | How many first comments will get extra pointsnumber
comments.ignoreShorterThan | | 10 | Users who leave short comment, will not get points for thisnumber
comments.valueOfLikesFromOthers | | 5 | Number of points user receive if someone likes his commentboolean
comments.ignoreAdmins | | 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
`javascript`
.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 ratingnumber
toDate | | Math.floor(Date.now() / 1000) (Unix time now) | Only group posts older than this Unix time affects ratingnumber
interval | | 300000 (ms) | Interval of rating update
#### .stopAutoUpdate()
It stops rating auto update
#### .getList(settings)
##### Default config
`javascript`
.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 returnboolean
plain | | false | Rating list will return as stringstring
sortBy | | points | Rating list will sort by (id / firstName / lastName / usualLikes / topLikes / totalLikes / usualComments / topComments / totalComments / commentsLikesFromOthers / likedAllPosts / points / place)string
sortDirection | | desc | Rating list sort direction ascending or descending (asc / desc)object
search | | 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
MIT