Разработка Telegram-бота для мониторинга криптопортфеля
Типичная ситуация: у трейдера активы разбросаны по 5–10 сетям — в пулах ликвидности Uniswap, стейкинге Lido, lending на Aave. Чтобы оценить общую экспозицию и риски ликвидации, приходится открывать 6 вкладок и собирать данные вручную. Наш Telegram-бот агрегирует данные из всех сетей в реальном времени: показывает единый портфель, настраиваемые алерты и критичные события. Решение окупается за неделю, если оно предотвращает хотя бы одну ликвидацию на сумму свыше $1000 — именно такую экономию фиксируют наши пользователи. А ещё наш бот заменяет платные мониторинговые сервисы стоимостью до $100/мес — вы получаете те же данные без ежемесячной подписки. Наша команда имеет 5+ лет опыта в блокчейн-разработке и 50+ реализованных проектов по мониторингу. Свяжитесь с нами — мы бесплатно протестируем бота на ваших кошельках и покажем, как он работает.
Проблемы, которые решаем
Фрагментация данных по сетям
Каждая сеть требует отдельного RPC или API-ключа. Мы подключаем Ethereum, Polygon, Arbitrum, Optimism, Base и BNB Chain через Moralis Web3 API для балансов токенов и DeBank API для DeFi-позиций. Для Bitcoin и Solana — отдельные адаптеры. Все данные собираются асинхронно через asyncio.gather. Время ответа бота — менее 2 секунд даже при 50+ кошельках.
Задержка в ценовых алертах
Пуллинг цены каждые 10 секунд — дорого и неточно. Вместо этого подписываемся на WebSocket стримы Binance и Bybit (бесплатно) для top-100 монет. Для остальных — используем события Chainlink price feed. Потери ценовых движений исключены: алерт приходит за 1–2 секунды. WebSocket-алерты приходят в 10 раз быстрее, чем пуллинг каждые 10 секунд.
Мониторинг health factor в lending-протоколах
Health factor Aave зависит от цены залога и долга. Отслеживаем его через события контрактов (Alchemy webhook) при любом изменении, а также через периодическую проверку при движении цены. Если HF падает ниже 1.2 — автоматический алерт с рекомендацией действий.
Как настроить алерт по health factor?
Пошаговая инструкция для встроенной команды /addalert:
- Выберите из подсказок
health_factor. - Укажите адрес кошелька, который уже добавлен командой
/addwallet. - Установите порог: например, 1.2.
- Выберите протокол (Aave V3, Compound V3). Бот автоматически определит активные позиции и начнёт мониторинг. При изменении HF бот пришлёт сообщение с текущим значением и ссылкой на Etherscan.
Архитектура бота
Telegram Bot API (polling/webhook) ↓ Bot handler (aiogram 3.x, Python 3.11) ↓ Portfolio aggregator service ├── Price service (Binance WebSocket + CoinGecko REST) ├── Balance fetcher (Moralis Balance API / Alchemy Token API) ├── DeFi positions (DeBank API + прямые вызовы к Aave/Compound) └── Event listener (Alchemy webhooks для on-chain событий) ↓ Database (PostgreSQL + Redis cache) ├── user wallets (public addresses) ├── alert configurations └── cached portfolio snapshots (TTL: цены 30s, балансы 2-5 min) ↓ Alert scheduler (APScheduler cron + event-driven triggers) Redis критичен для кэша: каждый запрос /portfolio не ходит к внешним API, а берёт данные из кэша. Это снижает нагрузку на сторонние сервисы и ускоряет ответ в 3–5 раз.
Сравнение источников данных
| Источник | Тип данных | Стоимость | Лимиты | Задержка |
|---|---|---|---|---|
| Moralis Balance API | Балансы ERC-20 | До 40k запросов/день бесплатно | 100 wallet/запрос | ~1с |
| Alchemy Token API | Балансы ERC-20 | Бесплатно (300M CU/мес) | 3 req/s | ~0.5с |
| DeBank API | DeFi-позиции | Бесплатно (100k запр/день) | 1 req/s | ~2с |
| Zerion API | DeFi-позиции | Платно (от $49/мес) | По тарифу | ~1с |
| Binance WebSocket | Цены | Бесплатно | 1024 streams | real-time |
| Chainlink price feed | Цены on-chain | Бесплатно (via node) | ~0.05 USD/запрос | ~1 блок |
Выбор в пользу Moralis и Alchemy вместо платного Zerion экономит до $50/мес на подключениях к данным.
Типы алертов
| Тип алерта | Пример настройки | Задержка |
|---|---|---|
| Изменение цены | BTC -5% за 1 час | 1-2 сек |
| Health factor | Aave HF < 1.2 | ~1 блок |
| Крупная транзакция | > $100k с кошелька | real-time |
| Whale движение | адрес из watchlist отправил > $50k | real-time |
| Новый токен | на кошелёк пришёл неизвестный ERC-20 | 1-2 сек |
Как мы это делаем: стек и реализация
Стек: Python 3.11 + aiogram 3.x + asyncio. Для каждого пользователя храним список кошельков в PostgreSQL (один запрос при команде). Агрегатор собирает данные параллельно:
async def get_portfolio(wallets: list[str]) -> Portfolio: async with asyncio.TaskGroup() as tg: balance_task = tg.create_task(balance_fetcher.fetch_all(wallets)) defi_task = tg.create_task(defi_fetcher.fetch_all(wallets)) price_task = tg.create_task(price_service.fetch_prices()) return Portfolio(balances=balance_task.result(), positions=defi_task.result(), usd_values=price_task.result()) Форматирование вывода — HTML с эмодзи, таблицами, ссылками на Etherscan. Пример:
/portfolio Ваш портфель (обновлено 2 сек назад): **Ethereum** ETH: 2.345 ($7,850) ↗ 1.2% USDC: 15,000.00 ($15,000) ▸ 0% Aave: депозит 10 ETH, долг 5,000 USDC, Health Factor: 1.45 **Polygon** MATIC: 5000 ($4,200) ↗ 3.1% Uniswap V3: MATIC/USDC (0.05%) — $2,300 Почему безопасность выходит на первый план?
Бот работает только с публичными адресами. Пользователь никогда не вводит приватные ключи или seed-фразы. В onboarding мы явно сообщаем: «Никаких приватных данных». Если бот детектирует попытку ввести похожий на private key текст (64 hex-символа или 12/24 слова) — команда игнорируется, пользователь получает предупреждение. Адреса хранятся в зашифрованной колонке PostgreSQL. Для защиты от флуда — rate limiting на уровне aiogram: не более 30 команд/мин на пользователя.
На каждом этапе используем проверенные решения: например, Chainlink documentation для ценовых фидов или официальные Aave контракты для HF. Это обеспечивает надёжность, подтверждённую сотнями аудитов.
Процесс работы над заказом
- Аналитика — обсуждаем какие сети, протоколы, алерты нужны. 2. Проектирование архитектуры — выбираем источники данных, провайдеров, кэш. 3. Реализация бота — Python/aiogram, интеграция с Telegram Bot API, подключение API и WebSocket. 4. Тестирование — юнит-тесты на обработчики команд, интеграционные тесты с моками API, стресс-тест на 100+ кошельков. 5. Деплой — на Railway, Fly.io или ваш VPS с Docker. Предоставляем документацию и инструкцию по эксплуатации.
Что входит в работу
- База: команды
/addwallet,/removewallet,/portfolio,/alerts. - Алерты по цене, health factor, крупным транзакциям.
- Поддержка всех EVM-сетей (Bitcoin/Solana — опционально).
- Кэширование в Redis для быстрого отклика.
- Документация по администрированию и развёртыванию.
- Гарантия работоспособности и доработки в течение месяца после сдачи.
Сроки ориентировочно
Базовая версия — от 2 до 3 рабочих дней. Расширенная с DeFi-позициями и WebSocket — от 5 до 10 дней. Стоимость рассчитывается индивидуально после анализа требований. Свяжитесь с нами для обсуждения вашего сценария — подберём оптимальную архитектуру. Закажите разработку Telegram-бота для мониторинга криптопортфеля — получите консультацию по вашему кейсу.
Пример кода команды /portfolio (полная версия)
@router.message(Command("portfolio")) async def portfolio_command(message: Message): user = await get_user(message.from_user.id) if not user.wallets: await message.answer("Сначала добавьте кошелёк командой /addwallet 0x...") return async with asyncio.TaskGroup() as tg: pf = tg.create_task(aggregator.get_portfolio(user.wallets)) prices = tg.create_task(price_service.get_all_prices()) portfolio = pf.result() text = format_portfolio(portfolio, prices.result()) await message.answer(text, parse_mode="HTML") Закажите разработку Telegram-бота для мониторинга криптопортфеля — получите консультацию по вашему кейсу.







