Example #1
0
 /**
  * @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]);
     }
 }
Example #3
0
 /**
  * @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);
 }
Example #4
0
 /**
  * @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;
 }