Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yutkin/tinkoff-invest-telegram-bot
Telegram бот для получения портфеля в "Тинькофф Инвестиции"
https://github.com/yutkin/tinkoff-invest-telegram-bot
go golang google-cloud google-cloud-functions google-functions telegram telegram-bot tinkoff tinkoff-invest
Last synced: 1 day ago
JSON representation
Telegram бот для получения портфеля в "Тинькофф Инвестиции"
- Host: GitHub
- URL: https://github.com/yutkin/tinkoff-invest-telegram-bot
- Owner: yutkin
- Created: 2019-10-05T19:26:55.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-13T21:31:19.000Z (over 3 years ago)
- Last Synced: 2023-05-06T20:22:39.749Z (over 1 year ago)
- Topics: go, golang, google-cloud, google-cloud-functions, google-functions, telegram, telegram-bot, tinkoff, tinkoff-invest
- Language: Go
- Homepage:
- Size: 26.4 KB
- Stars: 18
- Watchers: 2
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Описание
Telegram бот для получения портфеля в "Тинькофф Инвестиции".Бот разработан под [serverless](https://ru.wikipedia.org/wiki/%D0%91%D0%B5%D1%81%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F) деплой на [Google Cloud Functions](https://cloud.google.com/functions/). Serverless позволяет хостить бота бесплатно (или почти бесплатно) при небольших нагрузках на backend.
# Структура
* `telegram` - пакет с обработчиком обновлений от Telegram бота
* `tinkoff` - пакет для работы с Tinkoff OpenAPI
* `function.go` - точка входа для Google Functions. Инициализация глобальных переменных и обработка запросов с WebHook-а.# Подготовка к деплою
1. Создаём Telegram бота и получаем для него токен. [Инструкция](https://core.telegram.org/bots#6-botfather).
2. Получаем токен в [Tinkoff Open API](https://tinkoffcreditsystems.github.io/invest-openapi/auth/).
3. Узнаём свой Telegram ID, например, через [@userinfobot](https://t.me/userinfobot).
4. Получаем токен на [CurrencyConvertAPI](https://free.currencyconverterapi.com/free-api-key).# Деплой на 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=
export TINKOFF_APITOKEN=
export BOT_OWNER_ID=
export WEBHOOK_TOKEN=
export CURRENCY_API_TOKEN=
```
5. С помощью утилиты [gcloud](https://cloud.google.com/sdk/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
```
[Описание флагов](https://cloud.google.com/sdk/gcloud/reference/functions/deploy) для команды `gcloud functions deploy`.# Настройка Telegram Webhook
При успешном завершении, `gcloud functions deploy` печатает результат в `YAML` формате. Поле `httpsTrigger.url` нужно использовать в качестве адреса WebHook.Установка WebHook происходит через метод [setWebhook](https://core.telegram.org/bots/api#setwebhook). Пример:
```
http -v https://api.telegram.org/bot$TELEGRAM_APITOKEN/setWebhook \
url="https://europe-west2-.cloudfunctions.net/HandleTelegramUpdate?token=$WEBHOOK_TOKEN"
```После установки WebHook, Telegram будет отправлять все обновления от бота в функцию Google Functions.
# Дополнительно
1. [Документация к Google Functions](https://cloud.google.com/functions/docs/)
2. [Документация к Telegram Bot API](https://core.telegram.org/bots/api)
3. [Репозиторий с документацией к Tinkoff OpenAPI](https://github.com/TinkoffCreditSystems/invest-openapi/)
4. [Golang telegram-bot-api](https://github.com/go-telegram-bot-api/telegram-bot-api)