Разработка Telegram-бота для уведомлений о сделках

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка Telegram-бота для уведомлений о сделках
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1062
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка Telegram-бота для уведомлений о сделках

Трейдер не может 24/7 смотреть на экран. Telegram-бот для уведомлений решает это: мгновенно сообщает об исполненных ордерах, достижении price alert уровней, изменениях баланса и подозрительной активности.

Типы уведомлений

Торговые:

  • Ордер полностью исполнен: ✅ BUY 0.1 BTC @ $42,150 — исполнен
  • Ордер частично исполнен: ⚡ SELL 0.05/0.1 ETH @ $2,205 — частично
  • Ордер отменён: ❌ Ордер #12345 отменён

Ценовые алерты:

  • 🔔 BTC/USDT достиг $45,000 (ваш алерт)

Аккаунт:

  • Вывод подтверждён: 💸 Вывод 500 USDT → 0x...a1b2 подтверждён
  • Новый вход: 🔐 Новый вход с IP 1.2.3.4 (Берлин)

Реализация

from telegram import Bot
from telegram.ext import Application, CommandHandler, CallbackQueryHandler

class TradeNotificationBot:
    def __init__(self, token: str):
        self.bot = Bot(token)
        self.app = Application.builder().token(token).build()
        self._setup_handlers()
    
    def _setup_handlers(self):
        self.app.add_handler(CommandHandler('alerts', self.list_alerts))
        self.app.add_handler(CommandHandler('addalert', self.add_price_alert))
        self.app.add_handler(CallbackQueryHandler(self.handle_callback))
    
    async def notify_fill(self, user_chat_id: int, trade: TradeEvent):
        emoji = '✅' if trade.side == 'buy' else '🔴'
        text = (
            f"{emoji} Ордер исполнен\n"
            f"Пара: {trade.pair}\n"
            f"Сторона: {'Покупка' if trade.side == 'buy' else 'Продажа'}\n"
            f"Объём: {trade.quantity} {trade.base_currency}\n"
            f"Цена: ${trade.price:,.2f}\n"
            f"Сумма: ${trade.total:,.2f}\n"
            f"Время: {trade.timestamp.strftime('%H:%M:%S UTC')}"
        )
        await self.bot.send_message(chat_id=user_chat_id, text=text)
    
    async def notify_price_alert(self, user_chat_id: int, alert: PriceAlert):
        direction = '📈' if alert.direction == 'above' else '📉'
        await self.bot.send_message(
            chat_id=user_chat_id,
            text=f"{direction} {alert.pair} достиг {alert.price}\n"
                 f"Текущая цена: {alert.current_price}"
        )

Интеграция с биржевым бэкендом

Уведомления отправляются через event-driven систему. При каждом fill matching engine публикует событие в Redis Pub/Sub, notification worker подписывается и отправляет в Telegram:

import redis.asyncio as aioredis

async def notification_worker():
    r = aioredis.from_url('redis://localhost')
    pubsub = r.pubsub()
    await pubsub.subscribe('trade.fills', 'price.alerts', 'account.events')
    
    async for message in pubsub.listen():
        if message['type'] != 'message':
            continue
        
        event = json.loads(message['data'])
        chat_id = await get_user_chat_id(event['user_id'])
        
        if not chat_id:
            continue  # пользователь не привязал Telegram
        
        match event['type']:
            case 'fill':
                await notification_bot.notify_fill(chat_id, TradeEvent(**event))
            case 'price_alert':
                await notification_bot.notify_price_alert(chat_id, PriceAlert(**event))

Привязка Telegram аккаунта

Пользователь привязывает Telegram через уникальный токен в настройках биржи:

  1. Биржа генерирует одноразовый токен: LINK-a1b2c3d4
  2. Пользователь отправляет /link LINK-a1b2c3d4 боту
  3. Бот сохраняет (user_id, chat_id) связь
  4. Уведомления идут на этот chat_id

Разработка Telegram-бота для уведомлений с привязкой аккаунта и price alerts: 1–2 недели.