Completed
Push — master ( 460f55...4456a9 )
by Kirill
09:40
created

PersonalAnswersMiddleware   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 60
rs 10
wmc 8
lcom 1
cbo 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
C handle() 0 40 7
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Interfaces\Gitter\Ai;
5
use Domains\Message;
6
use Interfaces\Gitter\Karma\Validator;
7
use Interfaces\Gitter\Middleware\MiddlewareInterface;
8
use Domains\User;
9
use Illuminate\Support\Str;
10
11
/**
12
 * Class PersonalAnswersMiddleware
13
 */
14
class PersonalAnswersMiddleware implements MiddlewareInterface
15
{
16
    /**
17
     * @var Ai
18
     */
19
    protected $ai;
20
21
    /**
22
     * PersonalAnswersMiddleware constructor.
23
     */
24
    public function __construct()
25
    {
26
        $this->ai = new Ai();
27
    }
28
29
    /**
30
     * @param Message $message
31
     * @return mixed
32
     */
33
    public function handle(Message $message)
34
    {
35
        if ($message->user->login === \Auth::user()->login) {
36
            return $message;
37
        }
38
39
        $noMentions = !count($message->mentions);
40
41
        // Personal message
42
        $isBotMention = $message->hasMention(function(User $user) {
43
            return $user->login === \Auth::user()->login;
44
        });
45
46
        if ($isBotMention || $noMentions) {
47
            // Hello all
48
            $isHello = Str::contains($message->text_without_special_chars, \Lang::get('personal.hello_query'));
49
50
            if ($isHello) {
51
                $id = array_rand(\Lang::get('personal.hello'));
52
53
                $message->italic(\Lang::get('personal.hello.' . $id, [
54
                    'user' => $message->user->login
55
                ]));
56
            }
57
        }
58
59
        if (!count($message->mentions)) {
60
            // Question
61
            $isQuestion = Str::contains($message->text_without_special_chars, [
62
                'можно задать вопрос',
63
                'хочу задать вопрос'
64
            ]);
65
66
            if ($isQuestion) {
67
                $message->italic(sprintf('@%s, и какой ответ ты ожидаешь услышать?', $message->user->login));
68
            }
69
        }
70
71
        return $message;
72
    }
73
}
74