Telegram-бот для Base. С 23.09.2026 делает две вещи:
- Проверка монеты по адресу. Пришли в чат адрес контракта (или
/check <адрес>) — через минуту придёт справка и вывод: ⛔ Не брать /⚠️ Осторожно / 🟢 Можно смотреть. «Брать» бот не пишет никогда. - Слежка за монетами из watchlist: рост, падение, слив ликвидности.
Никакой авто-торговли. Все источники бесплатные.
Как у всех сканеров — симуляция продажи (honeypot), налоги, может ли кто-то допечатать монеты или вернуть себе контроль, скрытые права, ликвидность, крупнейшие держатели.
Чего у других нет:
- Кто запустил. Кошелёк автора, откуда пришли его первые деньги и за сколько минут до запуска (одноразовый кошелёк, пополненный на копейки за 5 минут до деплоя, — частая картина у ловушек).
- Его прошлые монеты — сколько запускал и сколько из них живы.
- Связи держателей. Кто из крупных получил монеты прямо от автора; кого пополнял один и тот же адрес. Биржевые кошельки (≥500 ETH на балансе) распознаются и не считаются инсайдерами — а если автор сам отправил на них монеты «для вида», об этом сказано прямо.
- Живой спрос — сколько разных покупателей за сутки, а не объём, который легко накрутить.
- Выход — сколько вернёшь, продавая на $500 и $5 000 (котировка KyberSwap; при провале симуляции продажи эти цифры скрываются — маршрут обещает выкуп даже у ловушки).
- Разбор проекта — есть ли продукт, развитие, кто стоит, партнёрства. Материалы бот собирает сам (сайт проекта, CoinGecko, GitHub за 30 дней, поиск по названию, инвесторам и адресу контракта), нумерует, и модель отвечает только по ним, с номером источника у каждого утверждения. Материалы про другие проекты с тем же тикером отбрасываются до модели; страницы, которые есть у любой монеты (кошелёк Binance Web3, basescan, агрегаторы), не считаются новостями; посты из соцсетей помечаются «не официально»; сведения без даты или старше трёх месяцев модель обязана помечать.
Пример (KNNEX, 23.09): ⛔ продать нельзя; 4 кошелька получили от автора 52% монет, из них 39% — на биржевые кошельки для вида; кошелёк автора пополнен 0,005 ETH за 5 минут до запуска.
Аудит 23.09.2026 за 18 дней после настройки 05.09: из 23 монет, которые бот прислал как «спрос подтверждён», 13 остались с нулевой ликвидностью, по-настоящему жива одна. А из всех монет, которые за это время выжили, бот сам выбросил около 80% (живых среди отброшенных — 122 из 9 812, среди одобренных — 28 из 1 246). Причина в устройстве: монета оценивалась один раз, в секунду создания пула, когда денег в нём ещё нет, и больше не пересматривалась. Раньше (20.08) выяснилось и второе: проверка контракта не предсказывает, выживет ли монета.
Поэтому поиск выключен (SCAN_BASE=0), а сила бота ушла в проверку конкретной монеты. Статистика
прошлого сканера сохранена: deftools.xyz/scout.html.
| Ключ | Зачем |
|---|---|
TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID |
бот и единственный чат, которому он отвечает |
GEMINI_API_KEY |
бесплатный ключ AI Studio для разбора проекта |
GROQ_API_KEY |
бесплатный ключ Groq — запасной, когда Gemini перегружен |
SCAN_BASE=1 |
вернуть поиск новых монет (по умолчанию выключен) |
Без ключей ИИ /check всё равно отвечает — без раздела «Проект». Проверить из консоли:
.venv\Scripts\python.exe checker.py <адрес>.
Ниже — как бот устроен и менялся до 23.09.2026.
Всё уже сделано автоматически:
- Бот @MemeScoutDef777Bot создан, токен и твой
chat_idзаписаны в.env. - Зависимости установлены в
.venv. - Задача Планировщика заданий MemeScoutBot зарегистрирована и уже прислала первые алерты в Telegram (в т.ч. поймала честный скам-токен с honeypot — score 5/🔴).
Просто открой чат с ботом в Telegram — сообщения уже идут. Ничего дополнительно делать не нужно.
Задача Планировщика запускает .venv\Scripts\python.exe main.py каждые 5 минут (MultipleInstancesPolicy=IgnoreNew) — если процесс уже работает, повторный запуск просто игнорируется; если процесс упал, он автоматически перезапустится в течение 5 минут. Триггер "At log on" использовать не получилось (среда, в которой я это настраивал, блокирует такие триггеры и вход через S4U) — этот вариант с повтором каждые 5 минут даёт тот же эффект (постоянная работа + самовосстановление) без этих ограничений.
Логи пишутся в meme-scout-log.txt в этой папке (пишет сам Python, не PowerShell).
schtasks /Query /TN "MemeScoutBot" /V — статус задачи
schtasks /Run /TN "MemeScoutBot" — запустить прямо сейчас
schtasks /End /TN "MemeScoutBot" — остановить текущий запуск
schtasks /Delete /TN "MemeScoutBot" /F — удалить задачу совсем
Или вручную из консоли: .venv\Scripts\python.exe main.py (из папки meme-scout).
К моменту обновления бот присылал ~50 сообщений в сутки и не давал понять, какие из них были правы. Пять новых вещей это чинят.
98% найденных токенов умирают в первые сутки. Поэтому событие «токен жив через 24 часа, ликвидность не ниже стартовой, объём торгов есть» гораздо ценнее, чем «появился новый токен». Такой токен получает отдельный алерт 🏆 и принудительно остаётся в watchlist.
Пороги: SURVIVOR_MIN_AGE_HOURS, SURVIVOR_MIN_LIQ_RATIO, SURVIVOR_MIN_VOLUME_USD.
📊 Подробнее (свежая цена/ликвидность/объём + изменение с момента алерта),
📈 График, 💰 Купить (готовая строка для покупки через Claude + Base MCP;
для Robinhood Chain честно пишет, что там только вручную),
👀 Следить, 🚫 Игнор (больше никогда не алертить по этому токену).
Пуш приходит сразу только на то, что того стоит:
- новый токен — если не 🔴 и ликвидность ≥
PUSH_MIN_LIQUIDITY_USD; - памп/дамп/rug — если токен «наш» (был 🟢/🟡 или добавлен вручную);
- выживший — всегда.
Всё остальное копится в тихой очереди и приходит одним утренним сообщением.
Плюс появился мьют по сети: /mute robinhood (оттуда идёт 66к из 79к токенов,
почти всё — мусор).
Раз в сутки (DIGEST_HOUR, по умолчанию 09:00) бот присылает: сколько нашёл
и отсеял по каждой сети, сколько было пушей и сколько ушло в тихую очередь,
саму очередь по категориям — и табло точности: что стало с токенами,
про которые он алертил, на отметках 24 часа и 7 дней, в разбивке по вердикту.
Видно, сколько 🟢 выжило против 🔴, медиану по цене и лучший результат.
Это и есть материал для настройки порогов. Доступно в любой момент:
/stats (только табло) и /digest (весь дайджест сразу).
Цена и ликвидность за неделю из price_snapshots, PNG прямо в чат.
Та же кнопка есть под каждым алертом.
- Ротация логов.
meme-scout-log.txtразросся до 658 МБ: httpx логировал каждый HTTP-запрос на уровне INFO. ТеперьRotatingFileHandler(5 МБ × 3) плюс httpx/httpcore/telegram переведены на WARNING. - 429 от GeckoTerminal. Бесплатный тариф — ~30 запросов в минуту, а
watchlist из 1600+ токенов опрашивался целиком каждые 2 минуты, из-за чего
часть проверок просто не отрабатывала. Добавлен общий троттлинг
(
GECKOTERMINAL_MIN_INTERVAL), обход порциями (WATCHLIST_BATCH, самые давно не проверявшиеся первыми) и параллелизм с ограничением. - Уборка watchlist. Токен вылетает после
WATCHLIST_DEAD_CHECKSпроверок подряд с мёртвой ликвидностью или по возрасту (WATCHLIST_MAX_AGE_DAYS). Добавленные вручную через/watchне трогаются никогда.
outcomes (снимок на момент алерта + контрольные точки 24ч/7д — основа
табло точности), alert_events (append-only журнал: alerts_sent хранит
только последний алерт каждого типа и для истории не годится),
digest_queue (тихая очередь), ignored (кнопка «Игнор»).
Миграция накатывается сама при старте, старые данные не трогает.
Сам этот бот - личный: он отвечает только владельцу и шлёт алерты ему одному. Но данные, которые он накопил, публичны:
- Страница: https://deftools.xyz/scout.html - воронка, разбивка по сетям,
свежие находки, выжившие и обвалы ликвидности. Обновляется раз в час
(
export_stats.py+watchers/publish.py). - Публичный бот: @MemeScoutStatsBot - те же цифры в
Telegram, доступен кому угодно. Живёт на Cloudflare Workers и читает тот же
снимок, что и страница, поэтому не зависит от того, включён ли этот
компьютер. Код и инструкции - в
public-bot/.
Публичному боту нужен собственный токен: у одного токена не может быть одновременно вебхука и long polling, а личный бот работает на polling.
/start— приветствие и список команд/status— статус, размер watchlist, счётчик пушей и тихой очереди за сутки/stats— табло точности: что стало с прошлыми алертами/digest— прислать дайджест прямо сейчас/chart <base|robinhood> <адрес>— график цены и ликвидности/watch <base|robinhood> <адрес>— добавить токен вручную/watchlist— показать watchlist/ignore//unignore//ignored— игнор-лист/mute [base|robinhood]//unmute [base|robinhood]— выключить/включить алерты целиком или по одной сети
- Robinhood Chain (chainId 4663, запущен 2026-07-01) — теперь тоже полностью работает: обнаружение идёт через GeckoTerminal (сеть
robinhood, подтверждено живым запросом), цены/ликвидность довозятся через DexScreener (слаг сетиrobinhood, тоже подтверждено). Проверено на реальных данных — бот сам нашёл и прислал алерты на BULLDOGE/CATS.- GoPlus / honeypot.is пока не поддерживают эту сеть (honeypot.is отдаёт 400, Blockscout часто 404 для неверифицированных контрактов) → часть проверок скоринга недоступна, алерт помечается "
⚠️ ограниченная проверка (новая сеть)", а не занижается втихую. ROBINHOOD_V3_FACTORYв.envуже заполнен официальным адресом Uniswap V3 factory (подтверждено через developers.uniswap.org и перепроверено на blockscout) — на всякий случай, если понадобится on-chain fallback, но сейчас discovery работает через GeckoTerminal и его не использует.ROBINHOOD_KNOWN_QUOTE_TOKENSзаполнен адресами WETH/USDG с docs.robinhood.com/chain/contracts, чтобы не скорить котируемую сторону пары.
- GoPlus / honeypot.is пока не поддерживают эту сеть (honeypot.is отдаёт 400, Blockscout часто 404 для неверифицированных контрактов) → часть проверок скоринга недоступна, алерт помечается "
- Base работает "из коробки" — обнаружение через GeckoTerminal (
new_pools), проверка через GoPlus + honeypot.is + Blockscout. Протестировано на реальных данных, в т.ч. поймал честный rug pull в процессе (резкий слив ликвидности до $0). - Скоринг — это чек-лист известных red flags (honeypot, mint, LP-лок, концентрация держателей и т.д.), а не гарантия. Это помощник для быстрой фильтрации, а не финансовый совет — решение всегда за тобой.
- Свободные лимиты API (GeckoTerminal/DexScreener/GoPlus/honeypot.is) могут давать сбои 429/таймауты при высокой нагрузке — в таком случае токен будет проверен на следующем цикле или с частично неполными данными.