GoogleSearchMiddleware::handle()   C
last analyzed

Complexity

Conditions 7
Paths 14

Size

Total Lines 34
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 20
c 1
b 0
f 0
nc 14
nop 1
dl 0
loc 34
rs 6.7272
1
<?php
2
namespace Domains\Bot\Middlewares;
3
4
use Domains\Message;
5
use Domains\Middleware\MiddlewareInterface;
6
7
/**
8
 * Class GoogleSearchMiddleware
9
 */
10
class GoogleSearchMiddleware implements MiddlewareInterface
11
{
12
    /**
13
     * @param Message $message
14
     * @return mixed
15
     */
16
    public function handle(Message $message)
17
    {
18
        $text = $message->escaped_text;
19
20
        if (preg_match('/^(@.*?\s)?(?:погугли|загугли|гугли)\s(.*?)$/isu', $text, $matches)) {
21
            if (!trim($matches[2])) {
22
                return $message;
23
            }
24
25
            $hasMentions = count($message->mentions);
26
            $mention = null;
27
28
            if ($hasMentions) {
29
                $mention = $message->mentions[0]->isBot()
30
                    ? $message->user
31
                    : $message->mentions[0];
32
            }
33
34
            $answer = trim($matches[1]) && $mention
35
                ? trans('google.personal', [
36
                    'user'  => $mention->login,
37
                    'query' => urlencode($matches[2]),
38
                ])
39
                : trans('google.common', [
40
                    'query' => urlencode($matches[2]),
41
                ]);
42
43
            $message->italic($answer);
44
45
            return null;
46
        }
47
48
        return $message;
49
    }
50
}
51