/** * @param array $message * @param Application $app * @return string */ public function execute(array $message, Application $app) { if ($app->getTelegram()->isAdmin($message['from']['id'])) { $return = "Hello my Master! Allowed commands list: \n"; } else { $return = "Hello! Allowed commands list: \n"; } foreach ($app->getTelegram()->getActionList() as $action) { $return .= '/' . lcfirst($action) . "\n"; } return $return; }
public function resolve(Application $app) { $content = json_decode($app->getRequest()->getContent(), true); if (isset($content['message'])) { $message = $content['message']; $session_id = $message['from']['id']; $app->getSession($session_id); $app->setSession('first_name', $message['from']['first_name']); $app->setSession('last_name', $message['from']['last_name']); $app->saveSession(); $text = ltrim($message['text'], '/'); $commands = explode(' ', $text); $command = ucfirst($commands[0]); $response = 'Unknown command :('; if (in_array($command, $app->getTelegram()->getActionList())) { $action_class = "TelegramBot\\Bot\\Action\\{$command}"; if (class_exists($action_class)) { /** @var ActionBase $Action */ $Action = new $action_class(); $response = $Action->execute($message, $app); } } $Command = new SendMessage(); $app->getApiRequest()->send($Command, ['chat_id' => $message['chat']['id'], 'text' => $response]); } }
/** * @param array $route * @return string * @throws Exceptions\ExceptionNotFound */ public function resolve(array $route = []) { if (!$route) { $route = $this->route; } if (!$route) { throw new Exceptions\ExceptionNotFound(); } $route_name = key($route); $controller = $route[$route_name]['action'][0]; $method = $route[$route_name]['action'][1]; $rc = new \ReflectionClass($controller); $action = $rc->newInstanceArgs(); $rm = new \ReflectionMethod($action, $method); $arguments = []; foreach ($rm->getParameters() as $param) { if (isset($route['variables']) && is_array($route['variables']) && array_key_exists($param->name, $route['variables'])) { $arguments[] = $route['variables'][$param->name]; } elseif ($param->isDefaultValueAvailable()) { $arguments[] = $param->getDefaultValue(); } elseif ($param->getClass()) { if ($param->getClass()->isInstance($this->app)) { $arguments[] = $this->app; } if ($param->getClass()->isInstance($this->app->getTelegram())) { $arguments[] = $this->app->getTelegram(); } if ($param->getClass()->isInstance($this->app->getRequest())) { $arguments[] = $this->app->getRequest(); } } else { throw new Exceptions\ExceptionNotFound(); } } return call_user_func_array([$action, $method], $arguments); }
/** * @param array $message * @param Application $app * @return string */ public function execute(array $message, Application $app) { $return = ''; $params = explode(' ', ltrim($message['text'], '/')); $params_cnt = count($params); if ($params_cnt == 1) { $session = $app->getSession(); if (isset($session['routes'])) { $return .= "Your routes: \n"; foreach ($session['routes'] as $name => $location) { $return .= $name . ' - ' . $location . "\n"; } } $return .= 'Use /' . $this->getName() . " <name> <address> to add new route point \n"; $return .= 'Use /' . $this->getName() . " <name> to start \n"; } else { if ($params_cnt == 3) { $session = $app->getSession(); $routes = isset($session['routes']) ? $session['routes'] : []; $routes[$params[1]] = $params[2]; $app->setSession('routes', $routes); $app->saveSession(); $return = 'Route added!'; } else { if ($params_cnt == 2) { $session = $app->getSession(); if (isset($session['routes']) && isset($session['routes'][$params[1]])) { $return .= 'Start route to: ' . $session['routes'][$params[1]] . "\n"; } else { $return .= 'Unknown route ' . $params[1] . "\n"; } } } } return $return; }