Технологическая документация · Python 3 · Telethon · PostgreSQL

LUCHOT

לוחות · две скрижали · два бота

Две независимые Telegram-инфраструктуры вокруг крипто-«коллов». Один бот форвардит контракты Solana в торговый бот в реальном времени, второй — считает доходность коллов по истории канала. Две скрижали, единый каркас.

2
бота · 2 скрижали
4
провайдера данных
SOL·TON·EVM
поддержка сетей
24/7
systemd-сервисы
Две скрижали

Два бота. Смежные задачи, разная природа.

Оба написаны на Python поверх Telethon, оба используют связку «бот + userbot», оба хранят состояние в PostgreSQL и разворачиваются как отдельные сервисы. Но решают зеркальные задачи.

I
@isaak_son_bot

Forwarder контрактов

Solana CA Forwarder · реальное время

Подписан на каналы-источники. Как только появляется сообщение с адресом контракта Solana, бот извлекает mint и пересылает его в торговый бот — тот сам инициирует покупку по факту получения CA.

  • Маршрутизация по источникам — пересылать в трейд-бот, зеркалить в архивный топик, добавлять комментарий.
  • Рыночные фильтры — капитализация, ликвидность, объём, держатели, доля топ-10, отзыв mint-полномочий.
  • Рабочие часы — 24-битная маска, в какие часы суток форвард разрешён.
  • Анти-дамп и анти-дубль — отсечка «списков кошельков» и кулдаун на повторный mint.
solana_light горячий путь низкая задержка
II
@Elazar_Lazarus_bot

Call Analytics

Telegram Call Analytics · по запросу

Читает историю выбранного канала за период, находит все «коллы» и для каждого считает рыночную доходность: капитализацию входа, достигнутый максимум (ATH), просадку и процент роста.

  • Карточки токенов — entry / ATH / dip, процент роста, ссылка на чарт по каждому коллу.
  • Почасовая статистика — гистограмма «power hours»: когда у канала самые прибыльные коллы.
  • CSV-выгрузка — все коллы отчёта одним файлом для дальнейшего анализа.
  • Multi-pool свечи — склейка истории через все пулы токена, включая bonding-curve pump.fun.
call_analytics пошаговый мастер точность данных
Сходства и различия

Один каркас — два характера

Характеристика Скрижаль I — Forwarder Скрижаль II — Analytics
Юзернейм@isaak_son_bot@Elazar_Lazarus_bot
Режим работыреальное время — слушает каналыпо запросу — читает историю
Главное действиепереслать mint в торговый ботпостроить отчёт о доходности коллов
Схема БДsolana_lightcall_analytics
СетиSolana (форвард), TON / EVM (детект)Solana + опц. TON / ETH / BSC
Рыночные данныеSolanatracker · DexScreener · GMGNDexScreener · GeckoTerminal · GMGN · Solanatracker
Доступтолько владелецтолько владелец
Хранилище кэшав памяти (TTL)в БД — market_cache (TTL)
Поток данных

Как это работает

Горячий путь форвардера оптимизирован под минимальную задержку «сообщение → форвард». Аналитик — под полноту и точность исторических рыночных данных.

Скрижаль I

Горячий путь форварда

1
Приём

Userbot ловит новое сообщение в подписанном канале, при необходимости фильтрует по форум-топику.

2
Извлечение

Поиск адресов SOL / TON / EVM в тексте и в URL inline-кнопок, дедупликация кандидатов.

3
Анти-дамп

4+ адресов без маркеров Market Cap / Price — пост считается списком кошельков и пропускается.

4
Рабочие часы

Если текущий час запрещён маской power-hours — форвард молча пропускается.

5
Анти-дубль

Тот же mint, отправленный недавно в пределах кулдауна, повторно не пересылается.

6
Фильтры

Запрос рыночных метрик и проверка порогов. Нет данных → fail-closed (блок), если не разрешён bypass.

7
Маршрутизация

mint уходит в торговый бот с троттлингом; зеркало (опц. с комментарием) — в архивный топик.

8
Учёт

Результат пишется в журнал forwards; блок — в историю с уведомлением владельца.

Скрижаль II

Построение отчёта

1
Мастер

Пошаговый сценарий: канал → период → набор порогов роста → запуск. Состояние в машине состояний.

2
Чтение истории

Userbot читает сообщения за период, извлекает кандидатов-контракты и текстовые подсказки.

3
Рыночные данные

MarketDataService резолвит токен, собирает свечи и вычисляет entry / ATH / dip. Результат кэшируется в БД.

4
Запись

Создаётся job, по каждому коллу — строка в calls; прогресс отображается владельцу в реальном времени.

5
Отчёт

Текстовые карточки, сводка по порогам, почасовая гистограмма и CSV; длинный текст режется под лимит Telegram.

Возможности

Что под капотом

Маршрутизация по источникам

Для каждого канала отдельно: слать ли в трейд-бот, зеркалить ли текст в архивный топик, добавлять ли комментарий.

8 рыночных фильтров

Капитализация, ликвидность, объём за 24ч, держатели, доля топ-10, отзыв mint-полномочий и поведение при отсутствии метрик.

Рабочие часы

24-битная маска часов в таймзоне владельца с готовыми пресетами «всё / ничего / день / ночь».

Зеркалирование

Per-source mirror с перекрытием глобального, опциональным многострочным комментарием к каждому форварду.

Multi-pool аналитика

Склейка OHLCV из всех пулов токена — bonding-curve pump.fun + пул после миграции дают полную историю и корректный ATH.

Доходность коллов

По каждому коллу: капа входа, ATH и время до него, просадка, процент роста. Сводка по порогам от +10% до 10x.

Доступ только владельцу

Оба бота реагируют исключительно на сообщения одного аккаунта. Глобальный шлюз отсекает чужие апдейты до хендлеров.

Опциональный прокси

SOCKS5 / HTTP / MTProxy для Telethon и httpx. Старт ждёт готовности порта прокси — без restart-loop.

Идемпотентная схема

На старте схема и таблицы создаются через CREATE / ALTER IF NOT EXISTS. Отдельные миграции не нужны — схема самоприменяется.

Архитектура

«Бот + userbot»

Ключевой приём обоих проектов — два Telethon-клиента в одном процессе. Бот-клиент управляет, userbot смотрит на каналы. Только обычный аккаунт может подписываться на каналы и читать их историю.

Бот-клиент · bot token

Интерфейс владельца

Команды, меню, inline-кнопки. Через него человек управляет системой: добавляет источники, настраивает маршруты, фильтры и рабочие часы, запускает отчёты.

Userbot · пользовательская сессия

«Глаза» системы

Слушает каналы (Скрижаль I) или вычитывает историю (Скрижаль II). Авторизация — готовым .session-файлом либо интерактивно: телефон → код → 2FA-пароль.

Общий каркас: execute_query · соединение на запрос Fernet-шифрование api_hash parsers/contracts ton_utils proxy session_manager access gate
Технологический стек

Чем построено

Python 3.11+ / asyncio
Асинхронная среда, единый event-loop
Telethon ≥ 1.40
MTProto-клиент: и бот, и userbot
PostgreSQL 17
Хранилище состояния и кэша
asyncpg
Асинхронный драйвер Postgres
httpx + socks
HTTP к рыночным API через прокси
cryptography · Fernet
Шифрование api_hash в БД
loguru
Структурное логирование
python-dotenv
Загрузка конфигурации из .env
Docker / systemd
Деплой: Compose или venv-сервис на VPS
Рыночные данные

Четыре провайдера, один оркестратор

MarketDataService владеет всеми источниками: резолвит контракт в токен, выбирает стратегию расчёта по сети и режиму, склеивает пулы и фолбэкает с одного источника на другой при пустом ответе.

identity · fallback
DexScreener
Идентификация токена и пары, список пулов, поиск по текстовой подсказке, фолбэк-капитализация.
OHLCV · multi-pool
GeckoTerminal
Свечи всех пулов токена, включая «мёртвые» bonding-curve. Адаптивное разрешение под длину периода.
supply · klines
GMGN
Supply токена и расчёт доходности по K-line для Solana/EVM, safety-метрики: держатели, топ-10, authority.
unified chart
Solanatracker
Единый /chart с уже объединённым OHLCV через все фазы токена — не нужно склеивать пулы вручную.
Безопасность

Секреты не покидают сервер

Только владелец

Глобальный шлюз пропускает события лишь от ALLOWED_USER_ID. Чужакам — отказ ещё до хендлеров.

Шифрование api_hash

Fernet-шифрование ключом ENCRYPTION_KEY перед записью в БД. В открытом виде секрет не хранится.

Секреты в .env

Токены ботов, API-ключи, ENCRYPTION_KEY и DATABASE_URL живут только в .env на сервере — не в репозитории.

Сессии под защитой

.session-файлы хранятся с правами 600 в папке с правами 700 и монтируются только в контейнер бота.

Изолированный прокси

Боты лишь потребляют socks5-порт прокси, но не имеют прав управлять VPN-инфраструктурой VPS.

Позиционные параметры SQL

execute_query всегда использует $1, $2 … — позиционные параметры исключают SQL-инъекции.

Связаться

Подключить или обсудить?

Две скрижали уже работают как systemd-сервисы 24/7. Напишите — расскажу детали, покажу боты в деле, обсудим интеграцию.

@Maximke4up