Skip to content

👥 NPM module. Count activity of your VK group subscribers (likes, comments etc), sum up and convert to points

License

Notifications You must be signed in to change notification settings

nnqq/vk-subs-activity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, // SERVICE or USER token, NOT group
  groupId: process.env.GROUP_ID, // e.g. 147845620
});

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

Contact author

Telegram

About

👥 NPM module. Count activity of your VK group subscribers (likes, comments etc), sum up and convert to points

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published