fix "Call to a member function check()" и пустые команды теперь работают
This commit is contained in:
parent
40ceb7a86c
commit
dae9b2b5b1
|
@ -45,12 +45,13 @@ class command
|
||||||
/**
|
/**
|
||||||
* Выполнить команду
|
* Выполнить команду
|
||||||
*
|
*
|
||||||
|
* @param array $update Событие
|
||||||
* @param string ...$parameters Параметры команды
|
* @param string ...$parameters Параметры команды
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function execute(string ...$parameters): bool
|
public function execute(array $update, string ...$parameters): mixed
|
||||||
{
|
{
|
||||||
return ($this->program)(...$parameters);
|
return call_user_func($this->program, $update, ...$parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ class core
|
||||||
}
|
}
|
||||||
|
|
||||||
// Запись в реестр
|
// Запись в реестр
|
||||||
$this->patterns []= [$pattern];
|
$this->patterns []= $pattern;
|
||||||
|
|
||||||
return $pattern;
|
return $pattern;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ class core
|
||||||
// Пройдена проверка на совпадение с шаблоном
|
// Пройдена проверка на совпадение с шаблоном
|
||||||
|
|
||||||
// Выполнение команд связанных с шаблоном
|
// Выполнение команд связанных с шаблоном
|
||||||
$pattern->handle($update['object']['message']['from_id'], $parameters);
|
$pattern->handle($update['object']['message']['from_id'], $update, ...$parameters);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ class pattern
|
||||||
public function command(command $command): static
|
public function command(command $command): static
|
||||||
{
|
{
|
||||||
// Запись в реестр
|
// Запись в реестр
|
||||||
$this->commands []= [$command];
|
$this->commands []= $command;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ class pattern
|
||||||
public function check(string $text, array &$parameters = []): bool
|
public function check(string $text, array &$parameters = []): bool
|
||||||
{
|
{
|
||||||
// Проверка на совпадение с шаблоном
|
// Проверка на совпадение с шаблоном
|
||||||
preg_match_all($this->text, $text, $matches);
|
preg_match_all($this->text, $text, $matches, PREG_PATTERN_ORDER);
|
||||||
|
|
||||||
// Простой шаблон
|
// Простой шаблон
|
||||||
if (count($matches) === 1) return !empty($matches[0]);
|
if (count($matches) === 1) return !empty($matches[0]);
|
||||||
|
@ -64,7 +64,7 @@ class pattern
|
||||||
unset($matches[0]);
|
unset($matches[0]);
|
||||||
|
|
||||||
// Сложный шаблон
|
// Сложный шаблон
|
||||||
foreach ($matches as $match) if (!empty($match[0])) $parameters []= $match[0]; else return false;
|
foreach ($matches as $match) if (isset($match[0])) $parameters []= $match[0]; else return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -73,17 +73,21 @@ class pattern
|
||||||
* Обработать подключенные команды
|
* Обработать подключенные команды
|
||||||
*
|
*
|
||||||
* @param int $id Идентификатор аккаунта вызывающего выполнение
|
* @param int $id Идентификатор аккаунта вызывающего выполнение
|
||||||
|
* @param array $update Событие
|
||||||
* @param string ...$parameters Параметры команды
|
* @param string ...$parameters Параметры команды
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function handle(int $id, string ...$parameters): void
|
public function handle(int $id, array $update, string ...$parameters): void
|
||||||
{
|
{
|
||||||
foreach ($this->commands as $command) {
|
foreach ($this->commands as $command) {
|
||||||
// Перебор команд
|
// Перебор команд
|
||||||
|
|
||||||
|
// Авторизация
|
||||||
|
if (!empty($command->accounts) && !$command->access($id)) return;
|
||||||
|
|
||||||
// Выполнение команды
|
// Выполнение команды
|
||||||
if (!empty($command->accounts) && $command->access($id)) $command->execute(...$parameters);
|
$command->execute($update, ...$parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue