Telegraft

Тип бота

Одно оповещение на пересечении, а не сорок на колебаниях

Telegram-бот ценовых оповещений следит за порогами, которые задал пользователь, и пишет ему, когда порог пересечён, с гистерезисом — поэтому колеблющаяся цена не выдаёт серию сообщений подряд. Сквозная задержка измеряется секундами, а не миллисекундами. Он не годится там, где эта разница решает исход сделки.

Боты ценовых оповещений: цена, сроки и ограничения

Фиксированная цена
$5,000 USD
Срок
21 календарный день с момента старта
Сквозная задержка
Секунды от движения цены до доставленного сообщения
Потолок источника
API цен обычно ограничены несколькими запросами в секунду на ключ
Потолок рассылки
~30 сообщений/сек на бота
Заблокировавшие бота
Отправка падает с явной ошибкой, подписчик снимается

As of 2025-10-01, Telegram Bot API 13.4

Какую задачу это решает

Ценовые оповещения — самая простая сборка в крипто-половине этого каталога и та, которую чаще всего делают плохо, причём дефект не виден, пока бот не окажется в проде. Наивная реализация сравнивает текущую цену с порогом и срабатывает на пересечении. На живом рынке цена пересекает уровень не один раз — она несколько минут болтается вокруг него, пользователь получает тридцать сообщений за четыре минуты и выключает бота навсегда.

Лечится это гистерезисом: сработавшее оповещение не взводится заново, пока цена не отойдёт от порога на заданное расстояние. Кода там немного, а разница — между инструментом, который оставляют, и тем, который отключают в первый же волатильный день. То же касается срока жизни оповещения, паузы после срабатывания и потолка на число оповещений, которые один пользователь может получить за час.

Второе, о чём стоит говорить прямо, — задержка. Опрос источника цен, проверка порогов и отправка через Telegram в сумме дают секунды. Тому, кому важно узнать, что эфир прошёл уровень, этого хватает с запасом. Тому, чья стратегия зависит от реакции быстрее секунды, Telegram-бот не подходит, и никакая инженерия этого не изменит: нижнюю границу задаёт собственный темп отправки платформы.

Как идёт разработка

  1. Пользователь задаёт порог одним сообщением

    Актив, направление, уровень и повторяется ли оповещение. Всё, что для такой простой вещи требует больше одного сообщения, теряет пользователя, а здесь интерфейс и есть бóльшая часть продукта.

    commands
  2. Цены опрашиваются централизованно, а не отдельно под каждого пользователя

    Один опрос по активу обслуживает все оповещения на нём. Опрос на каждое оповещение масштабируется по числу пользователей, а не активов, и упрётся в rate limit поставщика данных почти сразу.

    webhook
  3. Пороги проверяются с гистерезисом

    Оповещение срабатывает на пересечении и снимается со взвода, пока цена не отойдёт назад на заданное расстояние. Одно это правило отделяет инструмент, которым продолжают пользоваться, от того, который заглушают.

    webhook
  4. Доставка ограничена потолком на пользователя в час

    Волатильный день не должен обернуться сотней сообщений. За пределами потолка оповещения не выбрасываются, а собираются в одну сводку — так ничего не теряется и никого не заливает.

    broadcast
  5. Разовые оповещения снимаются сами

    Большинство оповещений — ответ на один вопрос. По умолчанию срабатывание одноразовое, а повтор включается явно: так устроено то, чего люди на самом деле хотят, и список оповещений остаётся коротким.

    inline-keyboard
  6. Отказ источника цен виден, а не проглатывается молча

    Если источник перестал отвечать, пользователям сообщают, что оповещения приостановлены. Инструмент мониторинга, который ломается тихо, хуже его отсутствия: человек продолжает считать, что он под присмотром.

    broadcast

Что Telegram разрешает, а что нет

Сквозная задержка от движения цены до доставленного сообщения измеряется секундами.

Свой вклад дают интервал опроса, проверка порогов и темп отправки Telegram. Пользователю называют цифру, а не говорят про реальное время, потому что тому, кто на этой разнице торгует, она важна.

Бот отправляет порядка 30 сообщений в секунду суммарно.

Резкое движение, задевшее десять тысяч оповещений, доставляется целиком за минуты. Оповещения приоритизируются по близости к порогу, чтобы самые срочные ушли первыми, а про хвост говорят честно, а не прячут его.

API источников цен ограничивают частоту на ключ, обычно несколькими запросами в секунду.

Опрос централизован по активу и кешируется. Узкое место почти всегда поставщик данных, а не Telegram, и архитектура строится от этого, а не наоборот.

Бот не может написать пользователю, который его заблокировал: отправка падает с явной ошибкой.

У заблокировавших оповещения приостанавливаются, а не повторяются бесконечно, иначе они съедают бюджет отправки, который нужен активным пользователям.

Telegram не даёт подтверждения прочтения — только подтверждение отправки.

Можно показать, что оповещение доставлено, и нельзя — что его увидели. Формулировки говорят о доставке и не подразумевают, что человек что-то предпринял.

Когда это не нужно строить

  • Ваши пользователи торгуют на реакции быстрее секунды. Один только темп отправки Telegram задаёт нижнюю границу задержки, которую не убирает никакая реализация.
  • Нужны оповещения по сотням экзотических пар. Покрытие и стоимость у поставщика данных становятся всем проектом, а бот оказывается лёгкой его частью.
  • У вас уже есть торговая платформа со встроенными оповещениями. Второй источник оповещений с другими порогами даёт противоречащие друг другу уведомления.
  • Вы хотите продавать это как отдельный платный продукт, и других причин заходить в ваш бот у людей нет. Ценовые оповещения широко доступны бесплатно, и лучше всего эта сборка работает как довесок к чему-то ещё.

На чём это работает

КомпонентВерсияЗачем
grammY1.45Фреймворк бота и интерфейс управления оповещениями.
Cloudflare WorkerscurrentСреда исполнения: опрос и проверка порогов по расписанию cron.
Cloudflare D1currentОповещения, состояние взвода, паузы и история доставки.
Cloudflare KVcurrentКеш последних цен, общий для всех запусков проверки.
TypeScript5.9Строгий режим, цены в целых минимальных единицах, а не в числах с плавающей точкой.

О чём спрашивают перед стартом

Почему гистерезис настолько важен?

Потому что цена не пересекает уровень один раз. Она колеблется вокруг него, и наивное сравнение срабатывает на каждом пересечении: тридцать сообщений за четыре минуты, а дальше отключённые уведомления. Гистерезис — это несколько строк кода, и именно в них вся разница между удержанным пользователем и потерянным.

Какая у оповещения задержка на самом деле?

Секунды: интервал опроса плюс проверка порогов плюс темп отправки Telegram. Мы публикуем цифру, а не называем это реальным временем, потому что человек, торгующий на этой разнице, вправе знать её до того, как начнёт полагаться на бота.

Что происходит в день, когда двигается всё сразу?

Оповещения приоритизируются по тому, насколько близко они к своему порогу, а у каждого пользователя есть часовой потолок: сверх него оповещения собираются в сводку, а не выбрасываются. Ничего не теряется, и никто не получает двести сообщений.

Какие источники цен он может использовать?

Любого поставщика, чьи ограничения частоты укладываются в модель централизованного опроса. Выбор обычно решают покрытие нужных именно вам пар и стоимость — и то и другое здесь весит больше, чем сама разработка.

Оповещения прекращаются, если источник цен лёг?

Они приостанавливаются, и пользователям об этом сообщают. Инструмент мониторинга, который отказывает молча, хуже, чем его отсутствие: человек продолжает считать себя под присмотром, когда это уже не так.

Почему эта сборка дешевле остальных крипто-сборок?

Потому что здесь ничего не хранится, никакие средства не двигаются и нет регуляторной поверхности. Почти вся стоимость кошелька и запуска токена — это обработка сбоев вокруг денег, и ничего из этого сюда не относится.