Barfinex

Как работает 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 Создать бота (если ещё нет)

  1. Откройте @BotFather в Telegram.
  2. Отправьте команду: /newbot.
  3. Введите имя бота (например, «Barfinex Уведомления»).
  4. Введите username бота (например, barfinex_alerts_bot; должен заканчиваться на bot).
  5. BotFather пришлёт токен вида: 1234567890:AAH....

Сохраните этот токен — он понадобится как TELEGRAM_BOT_TOKEN.

Подсказка: Сюда можно добавить скриншот ответа BotFather с токеном (например, сохранить как public/images/docs/telegram-botfather.png и вставить ![Токен BotFather](/images/docs/telegram-botfather.png)).

1.2 Узнать, куда слать сообщения

Уведомления можно отправлять в:

  • Личные сообщения (только вам), или
  • Канал / группу (например, для команды).

Вариант А — Личные сообщения

  1. Найдите своего бота в Telegram и отправьте ему: /start.

  2. В браузере откройте (подставьте вместо <TOKEN> токен бота):

    https://api.telegram.org/bot<TOKEN>/getUpdates
    
  3. В ответе JSON найдите message.chat.id — это число, например 987654321.
    Это ваш chat_id для личных сообщений.

Вариант Б — Канал или группа

  1. Добавьте бота в канал или группу.

  2. Сделайте бота администратором с правом «Публикация сообщений».

  3. Напишите что-нибудь в канале/группе (или пусть бот один раз отправит сообщение).

  4. Снова откройте в браузере:

    https://api.telegram.org/bot<TOKEN>/getUpdates
    
  5. В ответе найдите 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.


Итог

  1. Telegram: Создать бота в BotFather → получить токен.
  2. Telegram: Узнать chat_id (личка: /start + getUpdates; канал/группа: добавить бота в админы + getUpdates или @userinfobot).
  3. Проект: В .env прописать TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID и при необходимости DETECTOR_TELEGRAM_CHAT_ID, DETECTOR_TELEGRAM_ENABLED=true.
  4. Проект: Убедиться, что ConfigModule детектора подхватывает этот .env.
  5. Перезапустить детектор; при DETECTOR_TELEGRAM_ENABLED=true и заданных переменных уведомления начнут приходить в выбранный чат или канал Telegram.

Подробнее про Bot API: документация Telegram Bot API.

Давайте свяжемся

Есть вопросы или хотите узнать больше о Barfinex? Напишите нам.