Розробка Telegram-бота для моніторингу криптопортфеля

Розробка Telegram-бота для моніторингу криптопортфеля Типова ситуація: у трейдера активи розкидані по 5–10 мережах — у пулах ліквідності Uniswap, стейкінгу Lido, lending на Aave. Щоб оцінити загальну експозицію та ризики ліквідації, доводиться відкривати 6 вкладок і збирати дані вручну. Наш Teleg

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1269
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1009

Розробка 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:

  1. Виберіть з підказок health_factor.
  2. Вкажіть адресу гаманця, який уже додано командою /addwallet.
  3. Встановіть поріг: наприклад, 1.2.
  4. Виберіть протокол (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. Це забезпечує надійність, підтверджену сотнями аудитів.

Процес роботи над замовленням

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