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 🙏

© 2026 – Pkg Stats / Ryan Hefner

plugbotbase

v0.7.2

Published

Provides a configuration-driven base for building [plug.dj](https://plug.dj) bots which run in [Node.js](https://nodejs.org/). ***This project is not yet ready for consumption!***

Readme

PlugBotBase

Provides a configuration-driven base for building plug.dj bots which run in Node.js. This project is not yet ready for consumption!

What's the point?

PlugBotBase has the following goals:

  • To abstract away the details of the plug.dj API
  • To make it simple to add new functionality to a bot
  • To encourage good architecture in client applications, especially via loose coupling
  • To provide enough configuration to be useful, but not so much to be overwhelming

This project was created after I wrote my own plug.dj bot, which had to be modified on a regular basis due to changes in the underlying API. Eventually I ended up retiring the bot as I didn't have enough time to keep up with the changes I was seeing. After learning from my mistakes there, I decided it would be best to create a separate NPM module which could be utilized to provide the basic bot framework. Then, I could create my bot by focusing just on the behaviors I wanted to achieve, and not worry too much about how to interface with plug.dj itself.

What PlugBotBase is not

PlugBotBase is not a fully-functional bot in any sense of the term. If you download and run the project, it will do just two things:

  1. Log into a plug.dj room using configuration-provided values, and
  2. Perform some application logging of the things it sees while there.

PlugBotBase is intended only as a starting point for building functional bots.

Who's using PlugBotBase

Right now I'm using PlugBotBase to power my own bot, called EmancipatorBot. If you're using PlugBotBase in your own project, let me know!

Getting started

Running a bot on top of PlugBotBase is straightforward. You need to set up some required configuration (see below), then you're ready to add functionality to your bot, which is a simple matter of having files in the right directory structure.

You can follow the Getting Started guide.

FAQ

My bot claims to connect to the room, but I'm seeing the error [plugAPI] Error while joining: notFound and the bot never appears in the room.

This seems to be an issue with the underlying PlugAPI we are using; it reports successful connection to the room when this is not the case. This occurs if the room name you specified in your config is not valid. Keep in mind that you don't specify the room name (which can be changed) in your configuration; you specify the unique portion of the room's URL.

I keep seeing messages saying "UNKNOWN MESSAGE FORMAT" in my logs.

This is nothing to worry about. It occurs when the PlugAPI implementation we are using encounters an event message it's not familiar with. Such messages are still passed through to PlugBotBase and handled (or not) appropriately from there, so these warnings can be safely ignored.

That said, if you see a warning for a message type you'd like to use in your own application that isn't supported, feel free to raise an issue about it or submit a pull request.