Telegram бот для получения портфеля в "Тинькофф Инвестиции".
Бот разработан под serverless деплой на Google Cloud Functions. Serverless позволяет хостить бота бесплатно (или почти бесплатно) при небольших нагрузках на backend.
telegram
- пакет с обработчиком обновлений от Telegram ботаtinkoff
- пакет для работы с Tinkoff OpenAPIfunction.go
- точка входа для Google Functions. Инициализация глобальных переменных и обработка запросов с WebHook-а.
- Создаём Telegram бота и получаем для него токен. Инструкция.
- Получаем токен в Tinkoff Open API.
- Узнаём свой Telegram ID, например, через @userinfobot.
- Получаем токен на CurrencyConvertAPI.
- Клонируем репозиторий
git clone https://github.com/yutkin/tinkoff-invest-telegram-bot.git && cd tinkoff-invest-telegram-bot
- Собираем зависимости:
go mod vendor
- Выставляем переменные среды окружения:
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>
- С помощью утилиты 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
.
При успешном завершении, 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.