|
@@ -7,92 +7,92 @@ use BotKit\Events\Event;
|
|
|
|
|
|
class Bot {
|
|
|
|
|
|
- // Событие которое обрабатывает бот
|
|
|
- private Event $event;
|
|
|
-
|
|
|
- // Загружен ли драйвер
|
|
|
- private bool $driver_loaded = false;
|
|
|
-
|
|
|
- // Загружает драйвер
|
|
|
- public function loadDriver($driver) {
|
|
|
- if ($this->driver_loaded == true) {
|
|
|
- // Драйвер уже выбран
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if ($driver->forThis()) {
|
|
|
- $this->driver_loaded = true;
|
|
|
- $this->driver = $driver;
|
|
|
- $this->event = $driver->getEvent();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // Убеждается в том, что драйвер для бота загружен
|
|
|
- public function ensureDriversLoaded() {
|
|
|
- // Выбросить исключение если ни один драйвер не согласился обработать
|
|
|
- // запрос
|
|
|
- if ($this->driver_loaded == false) {
|
|
|
- throw new \Exception("Bot has no loaded drivers");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // Подключает обработчик события
|
|
|
- public function on(
|
|
|
- string $event_classname,
|
|
|
- callable $check,
|
|
|
- callable $callback
|
|
|
- ) : void
|
|
|
- {
|
|
|
-
|
|
|
- if (!is_a($this->event, $event_classname, true)) {
|
|
|
- // Если подключается обработчик события класса $event_classname,
|
|
|
- // а в этом запросе обрабатывается событие другого класса, то
|
|
|
- // и привязывать обработчик нет необходимости
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Проверка условия события
|
|
|
- // TODO: добавить параметры команды
|
|
|
- $check_params = [
|
|
|
- 'e' => $this->event,
|
|
|
- 'u' => $this->event->getUser(),
|
|
|
- 'driver' => $this->driver
|
|
|
- ];
|
|
|
-
|
|
|
- $result = call_user_func_array($check, $check_params);
|
|
|
- if ($result == false) {
|
|
|
- // Обрабатываемое событие - не для этого обработчика
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Вызов обработчика
|
|
|
- $callback_params = [
|
|
|
- 'e' => $this->event,
|
|
|
- 'u' => $this->event->getUser(),
|
|
|
- 'driver' => $this->driver
|
|
|
- ];
|
|
|
- call_user_func_array($callback, $callback_params);
|
|
|
-
|
|
|
- // Сохранение пользователя...
|
|
|
-
|
|
|
- // Завершение работы драйвера...
|
|
|
-
|
|
|
- exit();
|
|
|
- }
|
|
|
-
|
|
|
- // Подключает обработчик события без условия
|
|
|
- public function onEvent(string $event_classname, callable $callback) {
|
|
|
- if (!is_a($this->event, $event_classname, true)) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- // Вызов обработчика
|
|
|
- $callback_params = [
|
|
|
- 'e' => $this->event,
|
|
|
- 'u' => $this->event->getUser(),
|
|
|
- 'driver' => $this->driver
|
|
|
- ];
|
|
|
- call_user_func_array($callback, $callback_params);
|
|
|
- }
|
|
|
+ // Событие которое обрабатывает бот
|
|
|
+ private Event $event;
|
|
|
+
|
|
|
+ // Загружен ли драйвер
|
|
|
+ private bool $driver_loaded = false;
|
|
|
+
|
|
|
+ // Загружает драйвер
|
|
|
+ public function loadDriver($driver) {
|
|
|
+ if ($this->driver_loaded == true) {
|
|
|
+ // Драйвер уже выбран
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($driver->forThis()) {
|
|
|
+ $this->driver_loaded = true;
|
|
|
+ $this->driver = $driver;
|
|
|
+ $this->event = $driver->getEvent();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Убеждается в том, что драйвер для бота загружен
|
|
|
+ public function ensureDriversLoaded() {
|
|
|
+ // Выбросить исключение если ни один драйвер не согласился обработать
|
|
|
+ // запрос
|
|
|
+ if ($this->driver_loaded == false) {
|
|
|
+ throw new \Exception("Bot has no loaded drivers");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Подключает обработчик события
|
|
|
+ public function on(
|
|
|
+ string $event_classname,
|
|
|
+ callable $check,
|
|
|
+ callable $callback
|
|
|
+ ) : void
|
|
|
+ {
|
|
|
+
|
|
|
+ if (!is_a($this->event, $event_classname, true)) {
|
|
|
+ // Если подключается обработчик события класса $event_classname,
|
|
|
+ // а в этом запросе обрабатывается событие другого класса, то
|
|
|
+ // и привязывать обработчик нет необходимости
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Проверка условия события
|
|
|
+ // TODO: добавить параметры команды
|
|
|
+ $check_params = [
|
|
|
+ 'e' => $this->event,
|
|
|
+ 'u' => $this->event->getUser(),
|
|
|
+ 'driver' => $this->driver
|
|
|
+ ];
|
|
|
+
|
|
|
+ $result = call_user_func_array($check, $check_params);
|
|
|
+ if ($result == false) {
|
|
|
+ // Обрабатываемое событие - не для этого обработчика
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Вызов обработчика
|
|
|
+ $user = $this->event->getUser();
|
|
|
+ $callback_params = [
|
|
|
+ 'e' => $this->event,
|
|
|
+ 'u' => $user,
|
|
|
+ 'driver' => $this->driver
|
|
|
+ ];
|
|
|
+ call_user_func_array($callback, $callback_params);
|
|
|
+
|
|
|
+ // Сохранение пользователя...
|
|
|
+
|
|
|
+ // Завершение работы драйвера...
|
|
|
+
|
|
|
+ exit();
|
|
|
+ }
|
|
|
+
|
|
|
+ // Подключает обработчик события без условия
|
|
|
+ public function onEvent(string $event_classname, callable $callback) {
|
|
|
+ if (!is_a($this->event, $event_classname, true)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Вызов обработчика
|
|
|
+ $callback_params = [
|
|
|
+ 'e' => $this->event,
|
|
|
+ 'u' => $this->event->getUser(),
|
|
|
+ 'driver' => $this->driver
|
|
|
+ ];
|
|
|
+ call_user_func_array($callback, $callback_params);
|
|
|
+ }
|
|
|
}
|