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

paradiseapi.js

v1.10.0

Published

The main wrapper for Paradise Bot List to post server count and shard count

Downloads

12

Readme

Paradise Bot List API Wrapper

The official NPM Module for interacting with the Paradise API


Support


Installation

npm i paradiseapi.js@latest

or

npm i [email protected]

or

npm i paradiseapi.js --save


Hard Coded Install

Append the Line below to your package.json

    "paradiseapi.js": "^1.10.0",

• Save and profit


Ratelimits

You can POST Server and Shard Count stats once every 5 minutes


Response

[ Error ] 429 : [PBL] (429): Your are being ratelimited, 1 request per 5 mins.

[ Error ] 404 : [PBL] (404): Can't find server_count.

[ Error ] 404 : [PBL] (404): Authorization header not found.

[ Error ] 400 : [PBL] (400): server_count not integer.

[ Error ] 404 : [PBL] (404): Bot not found!

[ Error ] 400 : [PBL] (400): Incorrect authorization token.

[ Error ] 404 : [PBL] (404): Go generate auth token for your bot!

[ Error ] 400 : [PBL] (400): shard_count not integer.

[ Success ] 200 : [200]: Your Stats Has Been Posted.


Posting Stats

Constructor

PBL(client, token)
Arguments

Parameter | Type | Optional | Description |--------------|----------|--------------|--------------| token | String | No | The API Auth Token found on your bots page. client | Snowflake | No | The Client ID for the bot you want to post stats to.


Discord.js v12 Example

const Discord = require("discord.js")
const client = new Discord.Client()
const prefix = "!";
const PBL = require("paradiseapi.js")
const pbl = new PBL(client.user.id,"bot-auth-token")

client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}.`)
setInterval(() => {
/* Here is where we Post the stats to the Site (Only use one of these) */
   pbl.post(client.guilds.cache.size) /* Will `POST` server count*/
   //pbl.post(client.shard.count) /* Will `POST` shard count*/
   //pbl.post(client.guilds.cache.size, client.shard.count) /* Will `POST` server and shard count*/
  })
}, 300000) //5 Minutes in MS

client.on("message", message => {
    if(message.author.bot) return
    if(message.content == prefix + "ping"){
        message.reply(`Pong! it took ${client.ws.ping}`)
    }
})

client.login("token")

Discord.js v12 Example (Wtih event handler

module.exports = class extends EventClass {
    constructor() {
        super('ready', {
            emitter: 'client',
            event: 'ready'
        });
    }

    exec() {
  const PBL = require("paradiseapi.js")
  const pbl = new PBL("BOT_ID_HERE","AUTH_TOKEN_HERE")
  
/* Here is where we Post the stats to the Site (Only use one of these) */
   pbl.post(client.guilds.cache.size) /* Will `POST` server count*/
   //pbl.post(client.shard.count) /* Will `POST` shard count*/
   //pbl.post(client.guilds.cache.size, client.shard.count) /* Will `POST` server and shard count*/
    }
}

(Discord Akairo) Example

const Discord = require('discord.js');
const { Listener } = require('discord-akairo');
const request = require('superagent');
const fetch = require("node-fetch")
const Client = new Discord.Client()


module.exports = class ReadyListener extends Listener {
    constructor() {
        super('ready', {
            emitter: 'client',
            event: 'ready'
        });
    }

    exec() {
  const PBL = require("paradiseapi.js")
  const pbl = new PBL("BOT_ID_HERE","AUTH_TOKEN_HERE")
  
/* Here is where we Post the stats to the Site (Only use one of these) */
   pbl.post(client.guilds.cache.size) /* Will `POST` server count*/
   //pbl.post(client.shard.count) /* Will `POST` shard count*/
   //pbl.post(client.guilds.cache.size, client.shard.count) /* Will `POST` server and shard count*/
    }
}

Getting Stats

Constructor

PBL()
Arguments

Parameter | Type | Optional | Description |--------------|----------|--------------|--------------| username | String | Yes | The bots username. botid | Snowflake | Yes | The bots ID. owner | Snowflake | Yes | The bot owners ID. additionalOwners | String | Yes | The IDs of all additional owners (if any). Prefix | String | Yes | The bots listed prefix(s). shortDescription | String | Yes | The bots short description (Shown on cards). longDescription | String | Yes | The bots long description (Can be markdown). votes | Number | Yes | The bots total number of upvotes. usersVoted | String | Yes |IDs of the last 10 users who voted (May return less). usersVotedTotal | Number | Yes | Total number of Individual Users who have voted (Each user = 1). server | String | Yes | Link to the bots support server. website | String | Yes | Link to the bots website. github | String | Yes | Link to the bots github. donate | String | Yes | Link to donate to the bot. tags | String | Yes | List of the bots tags. library | String | Yes | The library the bot was made with. servers | Number | Yes | Number of total servers the bot is in. shards | Number | Yes | Number of total shards the bot has.


Example

const Discord = require("discord.js")
const client = new Discord.Client()
const prefix = "!";
const PBL = require("paradisebotsapi.js")
const stats = new PBL()
 
client.on("ready", () => { // ready listenerconsole.log(`Logged in as ${client.user.tag}`)}) 
client.on("message", message => { // message listener
    if(message.author.bot) return;
    if(message.channel.type !== "text") return;
    if(!message.content.toLowerCase().startsWith(prefix)) return;
    if(message.content == (prefix + "ping")){
        message.reply(`Pong ${client.ws.ping}ms`)
    }
     if(message.content == (prefix + "stats")){
        stats.get(client.user.id, function(data){
        let embed = new MessageEmbed()
        .setTitle(data.username)
        .setDescription(`Vote here: https://paradisebots.net/api/v1/bots/${client.user.id}`)
        .addField("Total Votes", data.votes);

        message.channel.send(embed)
        })
    }
})
 
 
client.login("token")

Example (GET User)

const Discord = require("discord.js")
const client = new Discord.Client()
const prefix = "!";
const PBL = require("paradisebotsapi.js")
const user_stats = new PBL()
 
client.on("ready", () => { // ready listenerconsole.log(`Logged in as ${client.user.tag}`)}) 
client.on("message", message => { // message listener
    if(message.author.bot) return;
    if(message.channel.type !== "text") return;
    if(!message.content.toLowerCase().startsWith(prefix)) return;
    if(message.content == (prefix + "ping")){
        message.reply(`Pong ${client.ws.ping}ms`)
    }
     if(message.content == (prefix + "stats")){
        user_stats.getUser("SOME_USER_ID", function(data){ // USER ID Should be String
        let embed = new MessageEmbed()
        .setTitle(data.userName)
        .setDescription('The info here is fetched from the Paradise Bots API')
        .addField("User ID", data.userID, true)
        .addField("Bio", data.bio, true)
        .addField("Certified User?", data.certifiedUser, true)
        .addField("Vote Banned?", data.voteBanned, true)
        .setFooter(`Requested By: ${message.author.username}`)
 
        message.channel.send(embed)
        })
    }
})
 
 
client.login("token")