/** * Execute /command * * @param string $command * * @return mixed */ public function executeCommand($command) { $command_obj = $this->getCommandObject($command); if (!$command_obj || !$command_obj->isEnabled()) { //Failsafe in case the Generic command can't be found if ($command === 'Generic') { throw new TelegramException('Generic command missing!'); } //Handle a generic command or non existing one $this->last_command_response = $this->executeCommand('Generic'); } else { //Botan.io integration, make sure only the command user executed is reported if ($this->botan_enabled) { Botan::lock($command); } //execute() method is executed after preExecute() //This is to prevent executing a DB query without a valid connection $this->last_command_response = $command_obj->preExecute(); //Botan.io integration, send report after executing the command if ($this->botan_enabled) { Botan::track($this->update, $command); } } return $this->last_command_response; }