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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@cxstin/discord-levels

v1.0.5

Published

A package that makes your life easier when it comes to making a leveling system for your discord.js bot!

Readme

Discord Levels

  • An easy to use xp framework made for discord bots that uses MongoDB!

Download

You can download it using any node package manager.

NPM

npm install discord-levels

Yarn

yarn add discord-levels

PNPM

pnpm add discord-levels

Setting Up

Now that you have the package downloaded, you can get started with setting it up!

First, you need to import the module into your project.

const Levels = require('discord-levels')

After that, you need to create a new instance of the Levels class and provide a valid mongodb database url.

const levels = new Levels({ mongodbURL: "mongodb://127.0.0.1" })

To start using the xp system, you need to run the init method

levels.init();

Methods

  • Method arguments marked with a ? are optional.

getUser(userId: string, guildId?: string) --> UserLevelProfile

Fetches the level profile of a user, or creates a new one if it doesn't exist.

deleteUser(userId: string, guildId?: string) --> UserLevelProfile

Deletes the level profile of a user.

getGuild(guildId: string) --> UserLevelProfile[]

Fetches the level profiles of all users in a guild.

deleteGuild(guildId: string) --> UserLevelProfile[]

Deletes the level profiles of all users in a guild.

xpFor(level: number) --> number

Returns the amount of needed xp for a specific level.

getLeaderboard(guildId: string, limit?: number) --> UserLevelProfile[]

Fetches a specific amount of users in the guild and orders them from the highest to lowest level.

User Methods

UserLevelProfile.setLevel(level: number) --> void

Changes the level of an user to a specific value.

UserLevelProfile.addLevel(level: number) --> void

Adds a specific amount of levels to a user.

UserLevelProfile.removeLevel(level: number) --> void

Removes a specific amount of levels from a user.

UserLevelProfile.setXP(xp: number) --> void

Changes the xp of an user to a specific value.

UserLevelProfile.addXP(xp: number) --> void

Adds a specific amount of xp to a user.

UserLevelProfile.removeXP(xp: number) --> void

Removes a specific amount of xp from a user.

UserLevelProfile.hasLevelledUp() --> boolean

Returns true if the user has reached a new level.

Examples

Add XP to a user when they send a message and check if the user has levelled up.

const { Client } = require('discord.js');
const Levels = require('discord-levels');

const client = new Client({ intents: ["GuildMembers", "GuildMessages"] });
const levels = new Levels({ mongodbURL: "mongodb://127.0.0.1" });

levels.init();

client.on("messageCreate", async (message) => {
    if (message.author.bot) return; // Return if the author of the message is a bot

    const userLevelProfile = await levels.getUser(message.author.id, message.guild.id); // Fetch the user
    const xpAmount = Math.floor(Math.random() * 35) + 15; // Get a random number from 15 to 35

    userLevelProfile.addXP(xpAmount); // Add the XP to the user profile.

    if (userLevelProfile.hasLevelledUp()) // Check if the user has levelled up
        message.channel.send({ content: `Congrats, ${message.author}! You have advanced to level **${userLevelProfile.level}**!` })
})

client.login("YOUR_TOKEN");