command.js is a library for the SinusBot. It allows to easily create commands via the SinusBots scripting engine. This library requires the v8 engine (SinusBot version 1.0.0+) to function properly. In addition to this library comes with two base commands: help and man.
Work on the stuff which matters and let the command handling do someone else!
This library will standardize the command handling for SinusBot it will help you especially with:
- Argument creation and validation
- Command documentation
- Error handling
- Permission handling
- Command prefix handling
- Localization
You can find the full documentation for this project on Github Pages.
const engine = require("engine")
const event = require("event")
//this makes sure that all scripts have finished loading
event.on("load", () => {
//try to load the library
const command = require("command")
//check if the library has been loaded successfully
if (!command) throw new Error("command.js library not found! Please download command.js and enable it to be able use this script!")
//start declaring your commands from here
command.createCommand("roll")
//displays the message when using the `!help` command
//should be relative short message
.help("rolls a number")
//displays this message when using the `!man roll` command
//more detailed documentation of what this command does
.manual(`Rolls a number, set a number after this command to use as maximum`)
//optional permission handling
//takes a function which first argument will be the requesting SinuSbot client
.checkPermission(client => {
//when some criterion is true
if (someValidationCriterion(client)) {
//return true so the library will allow the usage of the command to the client
return true
} else {
//return false if you do not want the client to have access to this command
return false
}
})
//adds an optional argument
//createArgument("number") creates a new argument which expects a number
//setName("max") sets the name of the argument to identify the argument later
//integer() tells the number argument to expect a whole number (not a floating point)
//min(1) tells the argument that the number should be greater or equal to 1
//optional(defaultVal) this flag tells it to be a value which does not necessarily be omitted
// the defaultVal will be used when no argument has been omitted
.addArgument(command.createArgument("number").setName("max").integer().min(1).optional(10))
//this function gets called when validation was successful and all arguments have been parsed successful
//client - is the user which executed the command
//arg - is an object which holds all parsed arguments which name has been set via the arguments .setName() function
//reply - depending on where the client has sent the message it will automatically reply to the client, channel or server chat
//ev - the raw event which has been received
.exec((client, { max }, reply, ev) => {
reply(`Rolling with 0-${max}`)
const random = require("helpers").getRandom(max)
reply(`You rolled ${random}`)
})
})Before editing, it's recommended to use npm install to install the sinusbot-typings.