Бот в Telegram для получения котировок акций по ОАО «Татнефть»

Представляю вам канал в Telegram посвящённый привилегированным акциям ОАО «Татнефть». Цель создания бота, это информирование пользователей о состоянии цен по привилегированным акциям. Для упрощения и ускорения информирования пользователей, я не стал реализовывать возможность взаимодействия пользователя с ботом на прямую для получения последних данных, проще один раз отправить сообщение вместо сотни разным пользователям, по этому бот был помещён в канал и отправляет сообщение один раз, но для всех желающих. Главная цель бота и канала, это предоставить доступ к информации на мобильных устройствах, где тарифный план сотового оператора, безлимитные мессенджеры и нет купленного трафика простого интернета. В дальнейшем, планируется с помощью бота покупать и продавать акции, устанавливать границы для закрытия сделки или её открытии. Всё это работает на базе Тинькофф инвестиции, данные по последним ценам бот получает благодаря пакету jamesRUS52/tinkoff-invest.

Задачи

Публиковать каждые 5 минут сообщение, в котором информация о цене за акцию, разница между ценой закрытия и открытия. Возможность перейти по ссылке и открыть график на сайте ru.tradingview.com, так же должен быть дневной график торгов, который обновляется online.

Когда вы получаете сообщение, вы сразу видите график, цены и возможность легко и просто открыть график в браузере. Картинка дневного графика, публикуется намерено, поскольку цель бота, доступ к данным если нет купленного трафика интернета, но есть безлимитные мессенджеры.

Проблемы и их решения

Каждые пять минут получать звуковое уведомление на телефоне, это весьма не удобно, главная проблема, что уже через два три часа телефон теряет огромный процент заряда аккумулятора. По этому было принято решение, отправлять сообщения без звукового сигнала, но за исключением что в начале часа одно сообщение будет приходить со звуковым сигналом. Таким образом, получаем 12 сообщений со звуком. Исключения составляют сообщения, которые информируют об открытии и закрытии торгов, и предупреждений об открытии и закрытии за 15 минут до.

Публиковать график в виде картинки, вот была проблема. Самое простое решение которое приходит на ум, найти некое API для получения картинки каждые 5 минут, однако я понял что бесплатных источников для решения этой задачи не было. По этому была предпринята попытка зайти на сайт ru.tradingview.com и посмотреть, какие процессы в браузере происходят, при получении скриншота графика. Оказалось, что отправляется на сервер ru.tradingview.com запрос на получение скриншота, и в ответ получал URL адрес. Я попробовал создать со своего сервера запрос на сервер ru.tradingview.com для получения URL которая вела на картинку и потом использовать её в сообщениях. К сожалению идея была плохая. Однако, я вышел из положения благодаря пакету spatie/browsershot который позволяет открыть сайт как будто вы его открыли в браузере, указать нужный размер окна, сделать скриншот и сохранить его на сервере, в последствии использовать его прикрепляя к сообщениям. Однако такое решение, задерживает отправку сообщений на 10 секунд, что очень плохо по моему мнению. Была идея публиковать текстовое сообщение с задержкой в 1 секунду, но после получения скриншота графика, редактировать сообщение прикрепляя к нему график в виде картинки. Однако, как показывает API Telegram, редактировать сообщение добавляя картинку, бот к сожалению не может, и очень жаль.

Какие планы?

Планирую написать бота для взаимодействия с человеком, для совершения сделок, контролирования своего портфеля и за своими сделками. С помощью бота, можно быстро и легко скинуть акции, облигации и другие сделки.

В будущем, планирую рассказать о боте для автоматической торговли на рынке, но это уже другая история...

Разработка · Идеи

Опубликовано 28.05.2021 в 22:19, изменено 29.05.2021 в 01:30 .