Как повторить
- Склонируйте репозиторий
github.com/Asmadey/Telegram-Google-Auth-Jev-verify-bot. Бот написан на Python (aiogram, FastAPI, PostgreSQL). - Создайте бота через
@BotFather, получитеBOT_TOKEN. Добавьте бота в группу администратором с правами «удалять сообщения» и «блокировать участников». УзнайтеCHAT_IDгруппы (отрицательное число для супергруппы, например через@getidsbot) - без него бот не стартует. - Получите ключ на OpenRouter и впишите его в
OPENROUTER_API_KEY. Через OpenRouter доступна модельtypesafe/jev-1.13: прямая регистрация в TypeSafe закрыта для новых аккаунтов с 22 сентября 2026. - Создайте OAuth-клиент (данные приложения для входа через Google) в Google Cloud. В репозитории он сделан через проект Firebase, но Firebase SDK в коде не используется. Впишите
GOOGLE_CLIENT_IDиGOOGLE_CLIENT_SECRET, адрес обратного вызова:<PUBLIC_BASE_URL>/auth/google/callback. - Сгенерируйте
SECRET_KEY- случайную строку, которой бот подписывает сессии:python3 -c "import secrets; print(secrets.token_urlsafe(48))". Без неё старт тоже упадёт с ошибкой. - Поднимите PostgreSQL: локально через
docker compose up -d, на Railway через плагин Postgres. Задеплойте сервис на Railway, автодеплой подхватится из GitHub. - Запустите бота. Таблицы создаются сами из
migrations/*.sqlпри первом старте.
docker compose up -d
pip install -r requirements.txt
python main.pyПеременные окружения и адрес обратного вызова могут не сойтись с первого раза, заложите время на отладку.
Как проверить результат
С тестового аккаунта без прав администратора напишите в группу нейтральное сообщение. Бот должен прислать персональную ссылку с таймером на 60 секунд. После входа через Google сообщение останется, следующие пройдут без проверки. Со второго тестового аккаунта отправьте явную рекламу со ссылкой: сообщение исчезнет, автора забанят без возможности пройти вход. Решение модели, вероятность и категорию по каждому сообщению видно в таблице screened_messages.
Как это устроено
Jev не пишет текст. Модель-классификатор возвращает вероятность блокировки и категорию: spam, advertising, scam или normal. Поэтому она отвечает быстро и стоит дёшево, выходные токены бесплатны.
Вход через Google ловит ботов, которые в первом сообщении пишут что-то безобидное вроде «привет». Ссылка привязана к from.id, то есть к конкретному пользователю Telegram, и один Google-аккаунт подтверждает только одного участника. Чтобы завести много ботов, придётся проходить много настоящих Google-входов.
Ссылки
- Telegram-Google-Auth-Jev-verify-bot: код бота с README, схемой базы, миграциями и 57 тестами.
- Jev 1.13 на OpenRouter: страница модели, которая проверяет первое сообщение новичка.
Источник: свой проект на GitHub (Asmadey), поверх идеи Глеба, @gleb_pro_ai.