Skip to content

Telegram бот для получения портфеля в "Тинькофф Инвестиции"

Notifications You must be signed in to change notification settings

yutkin/tinkoff-invest-telegram-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

Telegram бот для получения портфеля в "Тинькофф Инвестиции".

Бот разработан под serverless деплой на Google Cloud Functions. Serverless позволяет хостить бота бесплатно (или почти бесплатно) при небольших нагрузках на backend.

Структура

  • telegram - пакет с обработчиком обновлений от Telegram бота
  • tinkoff - пакет для работы с Tinkoff OpenAPI
  • function.go - точка входа для Google Functions. Инициализация глобальных переменных и обработка запросов с WebHook-а.

Подготовка к деплою

  1. Создаём Telegram бота и получаем для него токен. Инструкция.
  2. Получаем токен в Tinkoff Open API.
  3. Узнаём свой Telegram ID, например, через @userinfobot.
  4. Получаем токен на CurrencyConvertAPI.

Деплой на Google Functions

  1. Клонируем репозиторий git clone https://github.com/yutkin/tinkoff-invest-telegram-bot.git && cd tinkoff-invest-telegram-bot
  2. Собираем зависимости: go mod vendor
  3. Выставляем переменные среды окружения:
export TELEGRAM_APITOKEN=<telegram_bot_token>
export TINKOFF_APITOKEN=<tinkoff_api_token>
export BOT_OWNER_ID=<your_telegram_id>
export WEBHOOK_TOKEN=<any_random_string>
export CURRENCY_API_TOKEN=<token_for_currency_convert_API>
  1. С помощью утилиты gcloud деплоим бота:
gcloud functions deploy HandleTelegramUpdate \
    --runtime go111 \
    --trigger-http \
    --memory=128 \
    --timeout=10 \
    --region=europe-west2 \
    --set-env-vars=TELEGRAM_APITOKEN=$TELEGRAM_APITOKEN,TINKOFF_APITOKEN=$TINKOFF_APITOKEN,BOT_OWNER_ID=$BOT_OWNER_ID,WEBHOOK_TOKEN=$WEBHOOK_TOKEN,CURRENCY_API_TOKEN=$CURRENCY_API_TOKEN

Описание флагов для команды gcloud functions deploy.

Настройка Telegram Webhook

При успешном завершении, gcloud functions deploy печатает результат в YAML формате. Поле httpsTrigger.url нужно использовать в качестве адреса WebHook.

Установка WebHook происходит через метод setWebhook. Пример:

http -v https://api.telegram.org/bot$TELEGRAM_APITOKEN/setWebhook \
    url="https://europe-west2-<your_project>.cloudfunctions.net/HandleTelegramUpdate?token=$WEBHOOK_TOKEN"

После установки WebHook, Telegram будет отправлять все обновления от бота в функцию Google Functions.

Дополнительно

  1. Документация к Google Functions
  2. Документация к Telegram Bot API
  3. Репозиторий с документацией к Tinkoff OpenAPI
  4. Golang telegram-bot-api

About

Telegram бот для получения портфеля в "Тинькофф Инвестиции"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages