/**
  * @param Message $message
  * @return mixed
  */
 public function handle(Message $message)
 {
     if ($message->user->login === \Auth::user()->login) {
         return $message;
     }
     // Personal message
     $isBotMention = $message->hasMention(function (User $user) {
         return $user->login === \Auth::user()->login;
     });
     if ($isBotMention) {
         //$this->ai->handle($message);
     } else {
         // Hello all
         $isHello = Str::contains($message->text_without_special_chars, \Lang::get('personal.hello_query'));
         if ($isHello) {
             $id = array_rand(\Lang::get('personal.hello'));
             $message->italic(\Lang::get('personal.hello.' . $id, ['user' => $message->user->login]));
         }
         // Question
         $isQuestion = Str::contains($message->text_without_special_chars, ['можно задать вопрос', 'хочу задать вопрос']);
         if ($isQuestion) {
             $message->italic(sprintf('@%s, и какой ответ ты ожидаешь услышать?', $message->user->login));
         }
     }
     return $message;
 }
 /**
  * @param Message $message
  * @return mixed
  */
 public function handle(Message $message)
 {
     $isImage = preg_match('/[^`]http(?:s)?:\\/\\/.*?\\.(?:jpg|png|jpeg|svg|bmp)/iu', ' ' . $message->text);
     $isVideo = preg_match('/[^`]http(?:s)?:\\/\\/(?:www\\.)?(?:youtube\\.com|youtu\\.be).*?/iu', ' ' . $message->text);
     if (($isImage || $isVideo) && $message->user->login !== \Auth::user()->login) {
         $answer = \Lang::get('gitter.inline', ['user' => $message->user->login]);
         $message->italic($answer);
     }
     return $message;
 }
 /**
  * @param Message $message
  * @return mixed
  */
 public function handle(Message $message)
 {
     $text = $message->escaped_text;
     if (preg_match('/^(@.*?\\s)?(?:оформи\\sкод|код\\sоформи).*?$/isu', $text)) {
         $hasMentions = count($message->mentions);
         $mention = null;
         if ($hasMentions) {
             $mention = $message->mentions[0]->login === \Auth::user()->login ? $message->user : $message->mentions[0];
         }
         $answer = $mention ? \Lang::get('markdown.personal', ['user' => $mention->login]) : \Lang::get('markdown.common');
         $message->italic($answer);
         return null;
     }
     return $message;
 }
 /**
  * @param Message $message
  * @return mixed
  */
 public function handle(Message $message)
 {
     $text = $message->escaped_text;
     if (preg_match('/^(@.*?\\s)?(?:погугли|гугли)\\s(.*?)$/isu', $text, $matches)) {
         if (!trim($matches[2])) {
             return $message;
         }
         $hasMentions = count($message->mentions);
         $mention = null;
         if ($hasMentions) {
             $mention = $message->mentions[0]->login === \Auth::user()->login ? $message->user : $message->mentions[0];
         }
         $answer = trim($matches[1]) && $mention ? \Lang::get('google.personal', ['user' => $mention->login, 'query' => urlencode($matches[2])]) : \Lang::get('google.common', ['query' => urlencode($matches[2])]);
         $message->answer($answer);
         return null;
     }
     return $message;
 }
 /**
  * @param Message $message
  * @return mixed
  */
 public function handle(Message $message)
 {
     $collection = $this->validator->validate($message);
     $hasAnswers = false;
     foreach ($collection as $state) {
         $user = $state->getUser();
         if ($state->isIncrement()) {
             $message->user->addKarmaTo($user, $message);
             if ($user->id === \Auth::user()->id) {
                 $message->answer(\Lang::get('karma.bot', ['user' => $message->user->login]));
             }
         }
         if (!$state->isNothing()) {
             $hasAnswers = true;
             $message->italic($state->getTranslation($user->karma_text));
         }
     }
     if (!$hasAnswers) {
         return $message;
     }
     return Storage::SIGNAL_STOP;
 }