Розробка 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-бота для моніторингу криптопортфеля — отримайте консультацію по вашому кейсу.







