NFT Sales Bot - ТЗ
Мониторинг продаж NFT на маркетплейсе GetGems и отправка уведомлений в Telegram.
Принцип работы
Polling-подход: Периодический опрос 5 комиссионных адресов GetGems через TonAPI
Фильтрация: Отслеживание только указанных коллекций из collections.json
Уведомления: Отправка в Telegram чат с деталями продажи (название, цена, ссылки)
Основные компоненты
app.py - основной бот с polling-логикой
admin/handlers.py - админ-команды для управления коллекциями
admin/keyboards.py - inline-клавиатуры
utils/converter.py - конвертация адресов (raw ↔️ friendly)
collections.json - список отслеживаемых коллекций
processed_events.json - кэш обработанных событий
Технологии
Python 3.11+
aiogram 3.x (Telegram Bot API)
TonAPI REST API
systemd для автозапуска
Ключевые возможности
Мониторинг
Опрос 5 GetGems адресов каждые
Двойная защита от дубликатов: timestamp + event_id cache
Поддержка batch-покупок (несколько NFT в одной транзакции)
Graceful shutdown с сохранением состояния
Установка Рейт лимита(1.1 сек 1 запрос), для того что бы не словить еррор от ТонАпи.
Админ-панель (Telegram)
Просмотр отслеживаемых коллекций
Добавление/удаление коллекций
Уведомления
Формат сообщения:
💎 NEW SALE 💎
Collection: [название]
NFT: [имя NFT]
Price: [цена] TON
⏰ [дата время]
🔗 GetGems | Transaction
Конвертация адресов
Raw формат: 0:hex (для TonAPI)
Friendly формат: EQ... / UQ... (для пользователей)