npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vk-subs-activity

v0.1.14

Published

Count activity of VK group subscribers, sum up and convert to points

Downloads

37

Readme

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