New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

simillar-commands

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

simillar-commands

A simple npm utility module for obtaining similar commands in Discord Bots projects.

  • 1.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-75%
Maintainers
1
Weekly downloads
 
Created
Source

simillar-commands


NPM version NPM downloads GitHub Version GitHub Version

NPM info

A simple npm utility module for obtaining similar commands in Discord Bots projects.

Installation

  • npm install simillar-commands

Usage

Basic Example
Get an array with all simillar commands

// Import the Simillar Commands function
const { simillarCommands } = require('simillar-commands');

// Create an array of commands
const commands = [
	'ping',
	'say',
	//....
	'unsay'
];

// Get simillar commands
simillarCommands(commands, 'ping'); // ['ping']
simillarCommands(commands, 'pin');  // ['ping']
simillarCommands(commands, 'pong'); // ['ping']
simillarCommands(commands, 'sâY');  // ['say']
simillarCommands(commands, 'nsay'); // ['say', 'unsay']
simillarCommands(commands, 'foo');  // []


Normalize Commands
Normalize commands before use to prevent errors

// Import the Normalize function
const { normalize } = require('simillar-commands');

const command = 'CômmandExàmplê';

normalize(command); // commandexample

// Case insensitive usage
normalize(command, false); // CommandExample


Basic Bot 'Did you mean?' system
Show a react Embed to suggest a simillar command

// Import the Simillar Command and Normalize function
const { simillarCommand, normalize } = require('simillar-commands');

// Setup Discord Bot and Creates a Collection/Array of Commands
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '!';

client.commands = new Discord.Collection();

client.commands.set('ping', {
	name:'ping',
	run: msg => msg.reply('pong!')
});

client.commands.set('say', {
	name:'say',
	run: msg => msg.reply(msg.content.split(' ').slice(1).join(' '))
});

// Creates a Command Handler
client.on('message', async(msg) => {
	if(!msg.guild || !msg.content.startsWith(prefix) || msg.author.bot) return;
	const cmd = normalize(msg.content.slice(prefix.length).split(' ')[0]);

	let command = client.commands.get(cmd);
	
	if(command) { // Run command normally
		command.run(msg);
	} else { // Search for simillar command
		const simillar = simillarCommand(client.commands, cmd);

        // Creates a Embed
		const embed = new Discord.MessageEmbed()
			.setDescription(`Did you mean **${simillar}**?`);
		
		const msgEmbed = await msg.reply(embed);
        msgEmbed.react('✅');

        // Setup the Reaction Collector
        const filter = (reaction, user) => {
			if(reaction.emoji.name != '✅') return false;
			return(user.id == msg.author.id)
		}

		msgEmbed.createReactionCollector(filter, { max: 1 })
			.on('collect', () => { // Run command normally
				command = client.commands.get(simillar);
				command.run(msg);
			});
	}
});

// Start Bot
client.login('TOKEN');


Case Insensitive
You can also add a param to not ignore the case.

// Import module functions
const { normalize, simillarCommands, simillarCommand } = require('simillar-commands');

normalize('CômmÁnD');        // command
normalize('CômmÁnD', false); // CommAnD

const commands = ['ban', 'unban', 'BaN' , 'ping'];

simillarCommands(commands, 'bam');          // ['ban', 'BaN']
simillarCommands(commands, 'bam', false);   // ['ban']
simillarCommands(commands, 'BaM', false);   // ['BaN']
simillarCommands(commands, 'nban');         // ['ban, 'unban', 'BaN']
simillarCommands(commands, 'nBaN', false);  // ['BaN']

Keywords

FAQs

Package last updated on 21 Jun 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc