zend-blog-3-backend

Форк
0
/
UpdatesManager.php 
71 строка · 2.2 Кб
1
<?php
2

3
namespace App\Telegram;
4

5
use App\Entity\TelegramUpdate;
6
use App\Entity\TelegramUser;
7
use Doctrine\ORM\EntityManagerInterface;
8
use Xelbot\Telegram\Entity\Update;
9
use Xelbot\Telegram\UpdatesManagerInterface;
10

11
class UpdatesManager implements UpdatesManagerInterface
12
{
13
    /**
14
     * @var EntityManagerInterface
15
     */
16
    private $em;
17

18
    /**
19
     * @param EntityManagerInterface $em
20
     */
21
    public function __construct(EntityManagerInterface $em)
22
    {
23
        $this->em = $em;
24
    }
25

26
    public function saveUpdate(Update $obj, array $requestData)
27
    {
28
        $dbUser = null;
29
        $chatId = null;
30
        $textMessage = null;
31
        if ($message = $obj->getMessage()) {
32
            $textMessage = $message->getText();
33
            if ($user = $message->getFrom()) {
34
                $userRepository = $this->em->getRepository(TelegramUser::class);
35
                $dbUser = $userRepository->findOneBy(['userId' => $user->getId()]);
36
                if (!$dbUser) {
37
                    $dbUser = new TelegramUser();
38
                    $dbUser
39
                        ->setUserId($user->getId())
40
                        ->setFirstName($user->getFirstName())
41
                        ->setLastName($user->getLastName())
42
                        ->setUsername($user->getUsername())
43
                        ->setFirstName($user->getFirstName())
44
                        ->setBot($user->isBot())
45
                        ->setLanguage($user->getLanguageCode())
46
                    ;
47

48
                    if (isset($requestData['message']['from'])) {
49
                        $dbUser->setRawMessage(json_encode($requestData['message']['from'], JSON_THROW_ON_ERROR));
50
                    }
51
                    $this->em->persist($dbUser);
52
                    $this->em->flush();
53
                }
54
            }
55
            if ($chat = $message->getChat()) {
56
                $chatId = $chat->getId();
57
            }
58
        }
59

60
        $update = new TelegramUpdate();
61
        $update
62
            ->setRawMessage(json_encode($requestData, JSON_THROW_ON_ERROR))
63
            ->setTelegramUser($dbUser)
64
            ->setChatId($chatId)
65
            ->setTextMessage($textMessage)
66
        ;
67

68
        $this->em->persist($update);
69
        $this->em->flush();
70
    }
71
}
72

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.