Tutorial: Create Commands/Subcommands

Create Commands/Subcommands

Create a Command

// ping.js
const { Command } = require('aghanim')

module.exports = new Command('ping', // command name
	{ // options object
		category : 'Fun',
		help : 'Get Pong!',
		args : '',
		requirements: [], // Define requirements for this command. See command requirements tutorial
		hooks : { // Add hooks to commnand
			prereq : [], // Array of hooks fired before command requirement execution. function(msg, args, client, command)
			prerun : [], // Array of hooks fired before command execution. function(msg, args, client, command)
			executed : [], // Array of hooks fired after command execution. function(msg, args, client, command)
			error: [] // Array of hooks fired if the command has some error. function(msg, args, client, command, error)
		},
		response: "Pong!", // String or function(msg, args, client, commnad) that returns a string or EmbedMessageObject
		responseDM: "Pong by DM!", // String or function(msg, args, client, commnad) that returns a string or EmbedMessageObject
	},
	async function (msg, args, client, command) { // run function. Only execute if not options.response or options.responseDM
		msg.channel.createMessage('Pong by run function!')
})

Command execute first of: response > responseDM > run

Add your command to your bot

	// index.js
	// bot defined...
	const ping_command = require('./ping.js')
	client.addCommmand(ping_command)

	const path = require('path')
	//You can import the file directly using addCommandFile method
	client.addCommandFile(path.join(__dirname, '/ping.js'))

	//Or you can import a directory of commands with addCommandDir method
	client.addCommandDir(path.join(__dirname + 'path/to/commands'))

Create a Subcommand

// pong.js
const { Command } = require('aghanim')

module.exports = new Command('pong', 
	{
		childOf : 'ping', // Upper/Parent command Command. Parent command should be added before the subcommand
		category : 'Fun',
		help : 'Get Pong!',
		args : ''
	},
	async function (msg, args, client, command) {
		return msg.channel.createMessage('Pong!')
	}
)

// This command will be fired with `[client.prefix]ping pong`

Command Object

Create a command as object too

module.exports = {
	name: 'ping',
	category: 'Fun',
	help: 'Get Pong!',
	args: '',
	requirements: [],
	hooks : {
		prereq : [],
		prerun : [],
		executed : [],
		error: []
	},
	response: "Pong!",
	responseDM: "Pong by DM!",
	run: async (msg, args, client, command){
		return msg.channel.createMesage('Pong by run function')
	}
}