Розробка Telegram-бота для моніторингу криптопортфеля
Типова ситуація: у трейдера активи розкидані по 5–10 мережах — у пулах ліквідності Uniswap, стейкінгу Lido, lending на Aave. Щоб оцінити загальну експозицію та ризики ліквідації, доводиться відкривати 6 вкладок і збирати дані вручну. Наш Telegram-бот агрегує дані з усіх мереж у реальному часі: показує єдиний портфель, налаштовувані алерти та критичні події. Рішення окупається за тиждень, якщо воно запобігає хоча б одній значній ліквідації — саме таку економію фіксують наші користувачі (середня ліквідація $10k+). А ще наш бот замінює платні моніторингові сервіси — ви отримуєте ті ж дані без щомісячної підписки за $50–200. Наша команда має 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 | 100 wallet/запит | ~1с |
| Alchemy Token API | Баланси ERC-20 | 3 req/s | ~0.5с |
| DeBank API | DeFi-позиції | 1 req/s | ~2с |
| Zerion API | DeFi-позиції | За тарифом | ~1с |
| Binance WebSocket | Ціни | 1024 streams | real-time |
Вибір на користь Moralis та Alchemy замість платного Zerion дає значну економію на підключеннях до даних.
Типи алертів
| Тип алерту | Приклад налаштування | Затримка |
|---|---|---|
| Зміна ціни | 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-бота для моніторингу криптопортфеля — отримайте консультацію по вашому кейсу.







