Passed
Push — master ( d36537...437c74 )
by Robert
03:19
created

PingPongHandler::myMessage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Zored\TelegramBundle\Telegram\Bot\Handler;
6
7
use Zored\Telegram\Bot\Update\UpdateHandlerInterface;
8
use Zored\Telegram\Entity\Bot\Update;
9
use Zored\Telegram\Entity\Bot\Update\UpdateData\Message;
10
use Zored\Telegram\Entity\Control\Message\MarkdownMessage;
11
use Zored\Telegram\Entity\Control\Peer\User;
12
use Zored\Telegram\TelegramApiInterface;
13
14
class PingPongHandler implements UpdateHandlerInterface
15
{
16
    private const COMMAND = '/ping';
17
18
    /**
19
     * @var TelegramApiInterface
20
     */
21
    private $api;
22
23
    /**
24
     * @var int
25
     */
26
    private $myId;
27
28
    public function __construct(TelegramApiInterface $api)
29
    {
30
        $this->api = $api;
31
        $this->myId = $api->getCurrentUser()->getId();
32
    }
33
34
    /**
35
     * {@inheritdoc}
36
     */
37
    public function handle(Update $update): void
38
    {
39
        $message = $update->getUpdate()->getMessage();
40
        if (!$message || $this->myMessage($message) || $this->noCommand($message)) {
41
            return;
42
        }
43
44
        $this->api->sendMessage(
45
            new User($message->getFromId()),
46
            new MarkdownMessage($this->getResponseMessage($message->getMessage()))
47
        );
48
    }
49
50
    private function myMessage(Message $message): bool
51
    {
52
        return $this->myId === $message->getFromId();
53
    }
54
55
    private function noCommand(Message $message): bool
56
    {
57
        return 0 !== strpos($message->getMessage(), self::COMMAND);
58
    }
59
60
    private function getResponseMessage(string $requestMessage): string
61
    {
62
        $message = substr($requestMessage, \strlen(self::COMMAND));
63
        $message = trim($message);
64
65
        return "**Pong:** $message";
66
    }
67
}
68