Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

You want to override the tell command, that has also the w and msg aliases by default. The class that will override these commands is MyTellCommand (extends PluginCommand).

To do this, you've to set the original command in a state that allows it to be overriden. Also, aliases will be registered directly, but since all the work was done for the first registration, it's pretty simple.

//We are in the context of a plugin

$commandMap = $this->getServer()->getCommandMap();
$commandToOverride = $commandMap->getCommand("tell");
$commandToOverride->setLabel("tell_disabled"); //This prepares the command for the next step, setting up the Command->nextLabel
$commandToOverride->unregister($commandMap); //This changes the current label

//Now, we can register our command.

$command = new MyTellCommand($this);
$commandMap->register("myfallbackprefix", $command);

//And the aliases
$commandMap->register("myfallbackprefix", $command, "w");
$commandMap->register("myfallbackprefix", $command, "msg");
@iksaku

This comment has been minimized.

Copy link

@iksaku iksaku commented Oct 5, 2014

👍

@iksaku

This comment has been minimized.

Copy link

@iksaku iksaku commented Nov 12, 2014

It's OK if I register the Aliases within the command class?

@dktapps

This comment has been minimized.

Copy link

@dktapps dktapps commented Feb 12, 2019

This overengineered garbage is no longer necessary in modern PM. Now you can do this:

$commandMap = $this->getServer()->getCommandMap();
$commandMap->unregister($commandMap->getCommand("tell"));
$commandMap->register(new MyTellCommand());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.