Как работает Barfinex
Уведомления в Telegram от детектора и адвайзера
Получайте сигналы, открытие/закрытие позиций и предупреждения в Telegram — без входа в приложение и без просмотра логов. Один раз настроили — всё приходит в мессенджер.
Зачем нужны уведомления в Telegram?
С уведомлениями в Telegram вы получаете сигналы, открытие и закрытие позиций и предупреждения от детектора или адвайзера прямо в мессенджер. Не нужно заходить в приложение и смотреть логи — один раз настраиваете, дальше всё приходит в выбранный чат или канал.
Краткий чеклист
| Где | Что сделать |
|---|---|
| Telegram | Создать бота в @BotFather, взять токен. |
| Telegram | Написать боту /start (для лички) или добавить бота в канал/группу как администратора с правом «Публикация сообщений». |
| Telegram | Узнать chat_id через getUpdates или по документации/ботам вроде @userinfobot. |
| Проект | В .env задать TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID (и при необходимости DETECTOR_TELEGRAM_CHAT_ID, DETECTOR_TELEGRAM_ENABLED=true). |
| Проект | Убедиться, что детектор читает этот .env (Nest ConfigModule с нужным envFilePath). |
После этого перезапуск детектора с DETECTOR_TELEGRAM_ENABLED=true и заполненными переменными достаточен, чтобы уведомления пошли в указанный chat_id.
Шаг 1 — В Telegram
1.1 Создать бота (если ещё нет)
- Откройте @BotFather в Telegram.
- Отправьте команду:
/newbot. - Введите имя бота (например, «Barfinex Уведомления»).
- Введите username бота (например,
barfinex_alerts_bot; должен заканчиваться наbot). - BotFather пришлёт токен вида:
1234567890:AAH....
Сохраните этот токен — он понадобится как TELEGRAM_BOT_TOKEN.
Подсказка: Сюда можно добавить скриншот ответа BotFather с токеном (например, сохранить как
public/images/docs/telegram-botfather.pngи вставить).
1.2 Узнать, куда слать сообщения
Уведомления можно отправлять в:
- Личные сообщения (только вам), или
- Канал / группу (например, для команды).
Вариант А — Личные сообщения
Найдите своего бота в Telegram и отправьте ему:
/start.В браузере откройте (подставьте вместо
<TOKEN>токен бота):https://api.telegram.org/bot<TOKEN>/getUpdates
В ответе JSON найдите
message.chat.id— это число, например987654321.
Это ваш chat_id для личных сообщений.
Вариант Б — Канал или группа
Добавьте бота в канал или группу.
Сделайте бота администратором с правом «Публикация сообщений».
Напишите что-нибудь в канале/группе (или пусть бот один раз отправит сообщение).
Снова откройте в браузере:
https://api.telegram.org/bot<TOKEN>/getUpdates
В ответе найдите
chat.idвашего канала/группы. У каналов он часто выглядит как-1001234567890.
Узнать chat_id канала/группы можно также через @userinfobot и аналогичные боты.
Подсказка: Скриншот ответа getUpdates в браузере (с выделенным
chat.id) пригодится при повторной настройке. Можно сохранить, например, какpublic/images/docs/telegram-getupdates.png.
Запомните:
- TELEGRAM_BOT_TOKEN — токен от BotFather.
- TELEGRAM_CHAT_ID или DETECTOR_TELEGRAM_CHAT_ID — число (или
-100...для канала), куда слать уведомления.
Шаг 2 — В проекте
2.1 Переменные окружения
В корне проекта в файле .env (или .env.local / .env.production) добавьте:
TELEGRAM_BOT_TOKEN=<токен от BotFather> TELEGRAM_CHAT_ID=<ваш chat_id или chat_id канала>
Для детектора можно задать отдельно:
DETECTOR_TELEGRAM_CHAT_ID=<тот же или другой chat_id> DETECTOR_TELEGRAM_ENABLED=true
- TELEGRAM_BOT_TOKEN — нужен для отправки сообщений.
- TELEGRAM_CHAT_ID — адрес по умолчанию; детектор использует DETECTOR_TELEGRAM_CHAT_ID, если он задан, иначе TELEGRAM_CHAT_ID.
- DETECTOR_TELEGRAM_ENABLED=true — включает отправку уведомлений детектора (сигналы и т.п.) в Telegram по событиям из Redis.
2.2 Детектор: как подхватывается токен
В приложении детектора (apps/detector) токен бота берётся из конфига: в alert.module.ts используется ConfigService.get('TELEGRAM_BOT_TOKEN').
Убедитесь, что NestJS подхватывает ваш .env (например, ConfigModule.forRoot({ envFilePath: '.env' }) или ваш реальный путь к env-файлу), чтобы TELEGRAM_BOT_TOKEN был доступен.
2.3 Куда шлём сообщения
В коде уже используются DETECTOR_TELEGRAM_CHAT_ID или TELEGRAM_CHAT_ID в AlertService.sendMessage. Менять код не нужно — достаточно задать переменные в п. 2.1.
2.4 Включить уведомления детектора
В том же .env укажите:
DETECTOR_TELEGRAM_ENABLED=true
Так включается отправка сигналов детектора (и других событий по Redis) в Telegram.
Итог
- Telegram: Создать бота в BotFather → получить токен.
- Telegram: Узнать chat_id (личка:
/start+ getUpdates; канал/группа: добавить бота в админы + getUpdates или @userinfobot). - Проект: В
.envпрописать TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID и при необходимости DETECTOR_TELEGRAM_CHAT_ID, DETECTOR_TELEGRAM_ENABLED=true. - Проект: Убедиться, что ConfigModule детектора подхватывает этот .env.
- Перезапустить детектор; при DETECTOR_TELEGRAM_ENABLED=true и заданных переменных уведомления начнут приходить в выбранный чат или канал Telegram.
Подробнее про Bot API: документация Telegram Bot API.