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

silver-npm

v2.0.7

Published

Silver-npm

Readme

silver-npm

silver-npm is a npm package made by (Silver_3#6333) because i was bored

【Github】 【Npm】 【Node.js】

Installation

npm install silver-npm

Usage

const Silver = require('silver-npm'); 

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

.registerSlashCommands()

In this function, it will register the slash commands to the provided guilds with provided commands

A example of usage is below

index.js

//this is used to register slash commands
const Silver = require('silver-npm'); //require the package
const fs = require('fs'); //we will need fs (npm i fs)
const Discord = require('discord.js'); //discord.js v13 need to be installed (npm i discord.js)
const client = new Discord.Client({intents: ["GUILDS", "GUILD_INTEGRATIONS"]});

client.commands = new Discord.Collection(); //create a collection to store the commands

const files = fs.readdirSync('./commands').filter(file => file.endsWith(".js")); //only use files that ends with .js
for (const file of files) {
    const command = require(`./commands/${file}`); //file to commands folder 
    client.commands.set(command.data.name, command); //add the command to the collection
}

client.on('ready', () => {
    console.log('Bot online'); //when the bot is ready
    client.guilds.cache.forEach(guild => {
        require('./load-commands')(guild.id) //load slash commands for the guild
    });
});

client.on('interactionCreate', (interaction) => {
    if(!interaction.isCommand()) return;

    const { commandName } = interaction;

    const command = client.commands.get(commandName); //get the command from the collection
    if(command){ //if the command exists
        command.run(interaction, client); //run the command
    }
});

client.login('TOKEN'); //login to your bot

load-commands.js

const Silver = require('silver-npm');
const fs = require('fs');

module.exports = async (guildID) => {
    const commands = [];
    const files = fs.readdirSync('./commands').filter(file => file.endsWith(".js"));

    for (const file of files) {
        const command = require(`./commands/${file}`);
        commands.push(command.data.toJSON()) //adds the data to an array
    }

    const config = {
        guildID: guildID, //got from the index.js client.guilds.cache.forEach
        clientID: "CLIENT ID", //the clients id, right click the bot and click "copy id"
        token: "TOKEN", //bots token
        commands: commands
    };

    Silver.registerSlashCommands(config); //registers the commands
}

commands/ping.js

const { SlashCommandBuilder } = require('@discordjs/builders'); //require the slash command builder

module.exports = {
    run: async (interaction, client) => {
        interaction.reply("Pong!"); //replies with "Pong!"
    },
    data: new SlashCommandBuilder()
    .setName("ping") //name of the command
    .setDescription("Pong!") //description of the command
}

What is should look like:

https://cdn.discordapp.com/attachments/884277461926428722/889028424205754398/unknown.png https://cdn.discordapp.com/attachments/884277461926428722/889028457126854746/unknown.png

Output:

https://cdn.discordapp.com/attachments/884277461926428722/889102753761202226/unknown.png

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

.chatBot()

In this function, the bot will be a chatbot pretty much

index.js

const Silver = require('silver-npm'); //require the package
const Discord = require('discord.js'); //also need discord
const client = new Discord.Client({intents: ["GUILDS", "GUILD_MESSAGES"]});

client.on('ready', () => {
    console.log('Bot is online!'); //when the bot is online
});

client.on('messageCreate', (message) => {
    Silver.chatBot(message, CHANNEL_ID); //chat bot
});

client.login('TOKEN'); //login into the bot

Output:

https://cdn.discordapp.com/attachments/884277461926428722/889101716602101790/unknown.png

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

.buttonHelp()

In this function, the bot will make a help menu with buttons

index.js

const Silver = require('silver-npm'); //require the package
const Discord = require('discord.js'); //also need discord for embeds
const client = new Discord.Client({
    intents: ["GUILDS", "GUILD_MESSAGES"]
});

client.on('ready', () => {
    console.log('Bot is online'); //when bot is online
});

client.on('messageCreate', (message) => {
    if (message.content == "!help") {
        const embed1 = new Discord.MessageEmbed()
            .setTitle('Page 1')
            .setColor('RANDOM')

        const embed2 = new Discord.MessageEmbed()
            .setTitle('Page 2')
            .setColor('RANDOM')

        const embed3 = new Discord.MessageEmbed()
            .setTitle('Page 3')
            .setColor('RANDOM')

        Silver.buttonHelp(message.channel, [embed1, embed2, embed3], '▶', '◀');
        // Slver.buttonHelp(channel, array-of-embeds, next, back)


    }
});

client.login('TOKEN');

Output:

Video

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

.transcript()

In this function, the bot will make a transcript of the channel

index.js

const Silver = require('silver-npm'); //require the package
const Discord = require('discord.js'); //also require discord.js
const client = new Discord.Client({
    intents: ["GUILDS", "GUILD_MESSAGES"]
});

client.on('ready', () => {
    console.log('Bot is online'); //when bot is online
});

client.on('messageCreate', (message) => {
    if (message.content == "!transcript") {
        Silver.transcript(message.channel); //create the transcript
    }
});

client.login('TOKEN');

Output:

https://cdn.discordapp.com/attachments/892010603068141598/892011276551720990/unknown.png

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔