1. Go to this page and download the library: Download knivey/cmdr library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
knivey / cmdr example snippets
use knivey\cmdr;
$router = new cmdr\Cmdr();
//All command functions will have Request as the last argument
//command names must not contain a # or space
#[cmdr\attributes\Cmd("example", "altname")] //define as many cmds for this function as you want
#[cmdr\attributes\PrivCmd("example", "altname")] //private message command
#[cmdr\attributes\Syntax("<>args["cmdr\attributes\Option("--option", "enable some option")]
function exampleFunc2($additonal, $arguments, cmdr\Args $request) {
// example2 blah blah --option=value
// example2 blah --option=value blah (args will just have "blah blah")
// if just --option then its val is true
if($val = $request->getOpt('--option')) {
echo "--option was set to $val";
}
}
#[cmdr\attributes\PrivCmd("example2")]
#[cmdr\attributes\Desc("Command for private message example command")]
function exampleFunc2($additonal, $arguments, cmdr\Args $request) {
}
//Do this AFTER all functions you want to load are defined
$router->loadFuncs();
//If you have objects you use
$router->loadMethods($object);
// This will return what the command function returns
// Exceptions will be thrown if the args given don't pass the syntax
// Exception also thrown if the command doesn't exist
$router->call('example', 'arguments given to cmd', "additional", "arguments");
//simple example of a fictional IRC chatbot using triggers (!cmd)
function handleMsg(IRCuser $user, string $target, string $text) {
global $router;
if(isChan($target)) {
$trigger = "!";
if(substr($text, 0, 1) != $trigger)
return;
$text = substr($text, 1);
}
$text = explode(' ', $text);
$cmd = array_shift($text);
$text = implode(' ', $text);
if(isChan($target)) {
if($router->cmdExists($cmd)) {
try {
return $router->call($cmd, $text, $user);
} catch (Exception $e) {
//Exception may be bad arguments etc..., tell the user
notice($nick, $e->getMessage());
}
}
} else {
if($router->cmdExistsPriv($cmd)) {
try {
return $router->callPriv($cmd, $text, $user);
} catch (Exception $e) {
notice($nick, $e->getMessage());
}
}
}
}
use knivey\cmdr;
#[cmdr\attributes\Cmd("example")]
//The callable for the cmd function is given to wrapper
#[cmdr\attributes\CallWrap("\Amp\asyncCall")]
function example(cmdr\Request $request) {
}
#[cmdr\attributes\Cmd("example2")]
//You can give additional arguments to the wrapper
//pre is before the callable post is after
#[cmdr\attributes\CallWrap("someWrapperFunc", preArgs: [1,2,3], postArgs: ['stuff'])]
function example2(cmdr\Request $request) {
}
function someWrapperFunc($one, $two, $three, callable $func, $stuff, cmdr\Args $request) {
return $func($request);
}