{"id":34836523,"url":"https://github.com/dignezzz/bot-reality","last_synced_at":"2025-12-25T16:04:20.321Z","repository":{"id":292427948,"uuid":"980877636","full_name":"DigneZzZ/bot-reality","owner":"DigneZzZ","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-04T09:09:51.000Z","size":29419,"stargazers_count":20,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-04T11:17:50.116Z","etag":null,"topics":["reality","remnawave","telegram","vless-reality","vless-reality-vision","xray-core","xray-reality"],"latest_commit_sha":null,"homepage":"https://gig.ovh","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DigneZzZ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-09T21:54:06.000Z","updated_at":"2025-11-04T09:09:55.000Z","dependencies_parsed_at":"2025-05-09T23:19:15.916Z","dependency_job_id":"347c2546-33b1-4998-84b3-7a3848548cff","html_url":"https://github.com/DigneZzZ/bot-reality","commit_stats":null,"previous_names":["dignezzz/bot-reality"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DigneZzZ/bot-reality","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DigneZzZ%2Fbot-reality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DigneZzZ%2Fbot-reality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DigneZzZ%2Fbot-reality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DigneZzZ%2Fbot-reality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DigneZzZ","download_url":"https://codeload.github.com/DigneZzZ/bot-reality/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DigneZzZ%2Fbot-reality/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28032318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["reality","remnawave","telegram","vless-reality","vless-reality-vision","xray-core","xray-reality"],"created_at":"2025-12-25T16:02:48.400Z","updated_at":"2025-12-25T16:04:20.315Z","avatar_url":"https://github.com/DigneZzZ.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌐 Reality Checker Bot# Domain Reality Checker Bot\n\n\n\nСовременный Telegram-бот для проверки доменов на пригодность для Reality/VLESS прокси с поддержкой мультиязычности и геолокации IP-адресов.⚡ **Domain Reality Checker Bot** — это усовершенствованный Telegram-бот на базе Python и библиотеки Aiogram для проверки доменов на пригодность \n\n- 🎯 **Контекстные ответы** — результаты приходят в нужную тему\n\n## ✨ Основные возможности- 📱 **Организованность** — обсуждения не смешиваются между темами  \n\n- 🔄 **Поддержка всех команд** — работают команды с префиксом, упоминания и ответы\n\n### 🔍 Проверка доменов\n\n- **DNS** - разрешение A-записи (IPv4)## 💬 Умная работа в группах\n\n- **TLS** - проверка версии (TLSv1.3), шифра, сертификата\n\n- **HTTP** - поддержка HTTP/2, HTTP/3, TTFB, редиректы### 📋 Краткие отчёты с reply\n\n- **Порты** - сканирование TCP портов (80, 443, 8443)- В группах бот всегда отвечает **через reply** на оригинальное сообщение\n\n- **География** - определение страны, города, провайдера- Отправляется **краткий отчёт** для экономии места в чате\n\n- **Безопасность** - проверка в чёрных списках Spamhaus- К краткому отчёту добавляется кнопка **\"📄 Полный отчёт в ЛС\"**\n\n- **Ping** - измерение задержки до сервера\n\n- **WHOIS** - информация о сроке действия домена### 📄 Полные отчёты в личных сообщениях\n\n- **Оценка** - автоматический вердикт о пригодности для Reality- Полные отчёты **автоматически отправляются в ЛС** пользователя\n\n- Команда `!full domain.com` в группе → полный отчёт приходит в ЛС\n\n### 🌍 Геолокация IP-адресов- Кнопка \"📄 Полный отчёт в ЛС\" → **умная ссылка на бота** с автоматическим запросом\n\n- Определение **страны и города** по IP- **Безопасность**: deep link работает для любого пользователя\n\n- Информация о **провайдере/ISP**\n\n- Получение **координат** (широта, долгота)💡 **Как это работает**: Кнопка содержит ссылку вида `https://t.me/botname?start=full_domain.com`, которая автоматически откроет бота и запросит полный отчёт. Никакой предварительной настройки не требуется!\n\n- Поддержка **IPv4** адресов\n\n- Работа с базой **GeoLite2-City**### 🔄 Поведение по типам чатов\n\n| Тип чата | Краткий отчёт | Полный отчёт | Кнопка |\n\n### 🌐 Мультиязычность|----------|---------------|--------------|---------|\n\n- Интерфейс на **русском** и **английском** языках| **Личные сообщения** | В том же чате | В том же чате | \"Полный отчёт\" |\n\n- Автоопределение языка из настроек Telegram| **Группы/Супергруппы** | Reply в группе | Отправка в ЛС | \"📄 Полный отчёт в ЛС\" |\n\n- Переключение языка командой `/language`| **Темы в супергруппах** | Reply в теме | Отправка в ЛС | \"📄 Полный отчёт в ЛС\" |\n\n- Сохранение выбора в Redis\n\n## 🚀 Быстрый запуск с Dockereality/VLESS прокси. Бот работает асинхронно, использует Redis для управления очередью задач и кэширования результатов, а также предоставляет краткие и полные отчёты о проверке доменов.\n\n### 💬 Работа в группах\n\n- **Умные ответы** через reply в группах## ✨ Новые возможности\n\n- **Краткие отчёты** в чате + inline кнопка \"Полный в ЛС\"\n\n- **Полные отчёты** автоматически в личные сообщения### 🚀 Система повторных попыток (Retry Logic)\n\n- Поддержка **тем в супергруппах**- **Exponential backoff** с настраиваемым jitter\n\n- Команды с **префиксом** (!check, !full)- **Автоматические повторы** для Redis, Telegram API и проверки доменов\n\n- **Упоминания** бота (@botname domain.com)- **Гибкая конфигурация** времени ожидания и количества попыток\n\n- **Авторизация групп** через whitelist\n\n### 📊 Батч-обработка с прогресс-барами\n\n### ⚡ Производительность- **Автоматический прогресс-бар** для проверки 3+ доменов\n\n- **Connection Pool** для Redis (35 подключений)- **Батч-обработка** по 3 домена за раз для оптимизации\n\n- **Асинхронная обработка** задач- **Подробная статистика** выполнения (успешно, из кэша, ошибки)\n\n- **Кэширование** результатов на 1 час\n\n- **Graceful shutdown** с корректным закрытием ресурсов### 📈 Система аналитики\n\n- **Батч-обработка** множественных доменов- **Сбор метрик** использования бота и проверок доменов\n\n- **Прогресс-бары** для долгих операций- **Детальные отчеты** для администратора (/analytics)\n\n- **Трекинг** популярных доменов и пользовательской активности\n\n### 📊 Дополнительно\n\n- **Аналитика** использования бота### 🔒 Безопасность для групповых чатов\n\n- **История** последних 10 проверок- **Авторизация групп** через переменные окружения\n\n- **Лимиты** запросов (защита от спама)- **Автоматический выход** из неавторизованных групп\n\n- **Админ-панель** с управлением- **Гибкое управление** списком разрешенных групп\n\n- **Inline кнопки** для удобной навигации\n\n### 🧵 Поддержка тем в супергруппах\n\n## 📋 Команды- **Умные ответы** в той же теме, где упомянули бота\n\n- **Контекстная работа** с топиками Telegram\n\n### Основные- **Организованное общение** в больших группах\n\n- `/start` - Запустить бота\n\n- `/help` - Показать справку### 🎛️ Групповой режим работы\n\n- `/check \u003cдомен\u003e` - Краткая проверка- **Команды с префиксом** (!check, !full, !help)\n\n- `/full \u003cдомен\u003e` - Полная проверка- **Упоминания бота** (@botname domain.com)\n\n- `/ip \u003cадрес\u003e` - Информация об IP адресе ⭐ NEW- **Ответы на сообщения** бота с новыми доменами\n\n- `/mode` - Сменить режим вывода (full/short)- **Настраиваемый префикс** команд\n\n- `/history` - История проверок- **Умные ответы в группах**: краткие отчёты с reply + кнопка \"Полный в ЛС\"\n\n- `/language` - Выбрать язык интерфейса- **Полные отчёты в ЛС**: автоматическая отправка полных отчётов в личные сообщения\n\n\n\n### Групповые## 🔍 Что проверяет\n\n- `!check \u003cдомен\u003e` - Проверка в группе\n\n- `!full \u003cдомен\u003e` - Полная проверка в группеБот выполняет комплексную проверку доменов и возвращает отчёт, включающий:\n\n- `!help` - Справка для группы\n\n- `@botname \u003cдомен\u003e` - Упоминание бота- 🌐 **DNS**: Разрешение A-записи (IPv4)\n\n- 📡 **Скан портов**: Проверка открытых TCP-портов (80, 443, 8443)\n\n### Админ-команды- 🌍 **География и ASN**: Геолокация IP, ASN и провайдер\n\n- `/admin` - Панель администратора- 🚫 **Spamhaus**: Проверка IP в чёрных списках Spamhaus\n\n- `/analytics` - Статистика использования- 🟢 **Ping**: Задержка до сервера (в миллисекундах)\n\n- `/reset_queue` - Сбросить очередь- 🔒 **TLS**: Версия TLS (например, TLSv1.3), шифр, срок действия сертификата\n\n- `/clearcache` - Очистить кэш- 🌐 **HTTP**: Поддержка HTTP/2 и HTTP/3, TTFB (время до первого байта), редиректы, сервер, наличие WAF и CDN\n\n- `/groups` - Управление группами- 📄 **WHOIS**: Срок действия домена\n\n- 🛰 **Оценка пригодности**: Вердикт, пригоден ли домен для Reality (учитывает отсутствие CDN, поддержку HTTP/2, TLSv1.3 и пинг \u003c 50 мс)\n\n## 🚀 Быстрый старт с Docker\n\n### Пример краткого отчёта\n\n### 1. Создайте docker-compose.yml```\n\n```yaml🔍 Проверка: 35photo.pro:443\n\nservices:✅ A: 185.232.233.233\n\n  bot:🟢 Ping: ~25.0 ms\n\n    image: ghcr.io/dignezzz/bot-reality:latest    🔒 TLS\n\n    command: python bot.py✅ TLSv1.3 поддерживается\n\n    environment:    🌐 HTTP\n\n      - BOT_TOKEN=${BOT_TOKEN}❌ HTTP/2 не поддерживается\n\n      - ADMIN_ID=${ADMIN_ID}❌ HTTP/3 не поддерживается\n\n      - REDIS_HOST=redis🟢 WAF не обнаружен\n\n      - BOT_USERNAME=${BOT_USERNAME}🟢 CDN не обнаружен\n\n    depends_on:    🛰 Оценка пригодности\n\n      - redis❌ Не пригоден: HTTP/2 отсутствует\n\n    restart: unless-stopped[Полный отчёт]\n\n```\n\n  worker:\n\n    image: ghcr.io/dignezzz/bot-reality:latest### Пример полного отчёта\n\n    command: python worker.py```\n\n    environment:🔍 Проверка: google.com:443\n\n      - BOT_TOKEN=${BOT_TOKEN}🌐 DNS\n\n      - REDIS_HOST=redis✅ A: 142.250.74.14\n\n    depends_on:📡 Скан портов\n\n      - redis🟢 TCP 80 открыт\n\n    restart: unless-stopped🟢 TCP 443 открыт\n\n    deploy:🔴 TCP 8443 закрыт\n\n      replicas: 3🌍 География и ASN\n\n📍 IP: SE / Stockholm County / Stockholm\n\n  redis:🏢 ASN: AS15169 Google LLC\n\n    image: redis:7-alpine✅ Не найден в Spamhaus\n\n    restart: unless-stopped🟢 Ping: ~7.7 ms\n\n```🔒 TLS\n\n✅ TLSv1.3 поддерживается\n\n### 2. Создайте .env файл✅ TLS_AES_256_GCM_SHA384 используется\n\n```env⏳ TLS сертификат истекает через 65 дн.\n\nBOT_TOKEN=ваш_токен_от_BotFather🌐 HTTP\n\nADMIN_ID=ваш_telegram_id✅ HTTP/2 поддерживается\n\nBOT_USERNAME=имя_вашего_бота✅ HTTP/3 (h3) поддерживается\n\n```⏱️ TTFB: 0.13 сек\n\n🔁 Redirect: https://www.google.com/\n\n### 3. Запустите🧾 Сервер: Google Web Server\n\n```bash🟢 WAF не обнаружен\n\ndocker-compose up -d⚠️ CDN обнаружен: Google\n\n```📄 WHOIS\n\n📆 Срок действия: 2028-09-14T04:00:00\n\n### 4. Проверьте логи🛰 Оценка пригодности\n\n```bash❌ Не пригоден: CDN обнаружен (Google)\n\ndocker-compose logs -f```\n\n```\n\n## � Команды бота\n\n## ⚙️ Переменные окружения\n\n### Пользовательские команды\n\n### Обязательные- `/start` — Приветствие и основное меню\n\n```env- `/check \u003cdomain\u003e` — Краткая проверка домена\n\nBOT_TOKEN=             # Токен от @BotFather- `/full \u003cdomain\u003e` — Полная проверка домена  \n\nADMIN_ID=              # Telegram ID администратора- `/mode` — Переключить режим вывода (краткий/полный)\n\nBOT_USERNAME=          # Имя бота (для deep links)- `/history` — Показать последние 10 проверок\n\n```\n\n### Групповые команды\n\n### Redis- `!check \u003cdomain\u003e` — Краткая проверка в группе\n\n```env- `!full \u003cdomain\u003e` — Полная проверка в группе\n\nREDIS_HOST=redis       # Хост Redis (по умолчанию: redis)- `!help` — Справка по командам в группе\n\nREDIS_PORT=6379        # Порт Redis- `@botname \u003cdomain\u003e` — Упоминание бота для проверки\n\nREDIS_PASSWORD=        # Пароль (если есть)- Ответ на сообщение бота с новым доменом\n\n```\n\n### Административные команды\n\n### Групповой режим- `/adminhelp` — Список всех админ-команд\n\n```env- `/reset_queue` — Сбросить очередь проверок\n\nGROUP_MODE_ENABLED=true                    # Включить работу в группах- `/clearcache` — Очистить кэш результатов\n\nGROUP_COMMAND_PREFIX=!                     # Префикс команд- `/analytics` — Показать аналитику использования\n\nGROUP_OUTPUT_MODE=short                    # short или full- `/groups` — Управление авторизованными группами\n\nAUTHORIZED_GROUPS=-100123,-100456          # ID разрешенных групп (через запятую)- `/groups_add \u003cID\u003e` — Добавить группу в авторизованные\n\nAUTO_LEAVE_UNAUTHORIZED=false             # Автоматически покидать неразрешенные группы- `/groups_remove \u003cID\u003e` — Удалить группу из авторизованных\n\n```- `/groups_current` — Показать ID текущей группы\n\n\n\n### Лимиты## 🤖 Настройка бота в @BotFather\n\n```env\n\nPRIVATE_RATE_LIMIT_PER_MINUTE=10          # Проверок в минуту (личка)### Быстрая настройка команд\n\nPRIVATE_DAILY_LIMIT=100                   # Проверок в день (личка)Полная заготовка команд для настройки в @BotFather находится в файле [`BOTFATHER_COMMANDS.txt`](BOTFATHER_COMMANDS.txt).\n\nGROUP_RATE_LIMIT_MINUTES=5                # Интервал между проверками в группе\n\nGROUP_DAILY_LIMIT=50                      # Проверок в день (группа)#### Основные команды для @BotFather:\n\n``````\n\n/setcommands\n\n### GeoIP2start - 🚀 Запустить бота и показать меню\n\n```envcheck - 🔍 Краткая проверка домена\n\nGEOIP2_DB_PATH=GeoLite2-City.mmdb        # Путь к базе GeoIP2full - 📄 Полная проверка домена\n\nGEOIP2_AUTO_UPDATE=true                   # Автообновление базыmode - ⚙️ Переключить режим вывода\n\n```history - 📜 Показать последние проверки\n\n```\n\n### Дополнительные\n\n```env#### Настройка описания:\n\nSAVE_APPROVED_DOMAINS=false               # Сохранять пригодные домены```\n\nAUTO_DELETE_GROUP_MESSAGES=true           # Автоудаление сообщений в группах/setdescription\n\nAUTO_DELETE_TIMEOUT=300                   # Время до удаления (секунды)Бот для проверки доменов на пригодность для Reality/VLESS прокси. Проверяет DNS, TLS, HTTP/2, ping, WHOIS и выдает краткие/полные отчеты. Поддерживает работу в группах с умными ответами.\n\n``````\n\n\n\n## 💻 Локальная разработка#### Рекомендуемые настройки:\n\n- **Групповой режим**: Включить возможность добавления в группы\n\n### Требования- **Приватность**: `ENABLED` (бот видит только команды и упоминания)\n\n- Python 3.9+- **Инлайн-режим**: По желанию для расширенного функционала\n\n- Redis 6.0+\n\n- GeoLite2-City.mmdb (для функции /ip)💡 **Полный список команд и настроек** смотрите в [`BOTFATHER_COMMANDS.txt`](BOTFATHER_COMMANDS.txt)\n\n\n\n### Установка## ⚙️ Переменные окружения\n\n```bash\n\n# Клонировать репозиторий### Основные настройки\n\ngit clone https://github.com/DigneZzZ/bot-reality.git```env\n\ncd bot-realityBOT_TOKEN=your-telegram-bot-token          # Токен бота от @BotFather\n\nADMIN_ID=123456789                         # ID администратора\n\n# Создать виртуальное окружениеREDIS_HOST=redis                           # Хост Redis\n\npython -m venv venvREDIS_PORT=6379                            # Порт Redis\n\nsource venv/bin/activate  # Linux/MacREDIS_PASSWORD=                            # Пароль Redis (опционально)\n\n# или venv\\Scripts\\activate  # Windows```\n\n\n\n# Установить зависимости### Настройки групповой работы\n\npip install -r requirements.txt```env\n\nGROUP_MODE_ENABLED=true                    # Включить работу в группах\n\n# Скопировать .envGROUP_COMMAND_PREFIX=!                     # Префикс команд в группах\n\ncp .env.sample .envGROUP_OUTPUT_MODE=short                    # Режим вывода в группах: short (краткий) или full (полный)\n\n# Отредактировать .envAUTHORIZED_GROUPS=-1001234567890,-1009876543210  # ID разрешенных групп\n\nAUTO_LEAVE_UNAUTHORIZED=false             # Автоматически покидать неавторизованные группы\n\n# Запустить RedisBOT_USERNAME=your_bot_username             # Имя пользователя бота для deep links\n\ndocker run -d -p 6379:6379 redis:7-alpine```\n\n\n\n# Запустить бота### Дополнительные настройки\n\npython bot.py```env\n\nSAVE_APPROVED_DOMAINS=false               # Сохранять список пригодных доменов\n\n# В другом терминале запустить worker```\n\npython worker.py\n\n```## 🔒 Настройка безопасности для групп\n\n\n\n### Загрузка GeoIP2 базы### 1. Получение ID группы\n\n```bashДобавьте бота в группу и используйте команду:\n\n# Скачать GeoLite2-City.mmdb```\n\npython download_geoip2.py/groups_current\n\n```\n\n# Или вручную с https://dev.maxmind.com/geoip/geolite2-free-geolocation-data\n\n```### 2. Авторизация группы\n\nДобавьте ID в переменную окружения:\n\n## 📊 Примеры использования```env\n\nAUTHORIZED_GROUPS=-1001234567890,-1009876543210\n\n### Проверка домена```\n\n```\n\n👤 Пользователь: /check google.com### 3. Автоматический выход\n\nДля автоматического выхода из неавторизованных групп:\n\n🤖 Бот:```env\n\n🔍 Проверка: google.comAUTO_LEAVE_UNAUTHORIZED=true\n\n✅ A: 142.250.74.14```\n\n🟢 Ping: ~7.7 ms\n\n🔒 TLS: TLSv1.3## 🧵 Работа с темами в супергруппах\n\n✅ HTTP/2 поддерживается\n\n✅ HTTP/3 поддерживаетсяБот автоматически определяет тему (топик), в которой его упомянули, и отвечает именно в ней:\n\n🟢 WAF не обнаружен\n\n⚠️ CDN обнаружен: Google- 🎯 **Контекстные ответы** — результаты приходят в нужную тему\n\n❌ Не пригоден: CDN обнаружен- 📱 **Организованность** — обсуждения не смешиваются между темами  \n\n[📄 Полный отчет] [🔄 Перепроверить]- 🔄 **Поддержка всех команд** — работают команды с префиксом, упоминания и ответы\n\n```\n\n## �🚀 Быстрый запуск с Docker\n\n### Информация об IP\n\n```1. Убедитесь, что установлены [Docker](https://docs.docker.com/get-docker/) и [Docker Compose](https://docs.docker.com/compose/install/).\n\n👤 Пользователь: /ip 8.8.8.8\n\n2. Создайте файл `.env` с токеном Telegram-бота, полученным от `@BotFather`:\n\n🤖 Бот:   ```bash\n\n🌐 Информация об IP адресе   echo \"BOT_TOKEN=your-telegram-bot-token\" \u003e .env\n\n   ```\n\n🌐 IP адрес: 8.8.8.8\n\n🌍 Страна: United States (US)3. Создайте файл `docker-compose.yml`:\n\n🏙️ Город: Mountain View   ```yaml\n\n🔌 Провайдер: Google LLC   services:\n\n📍 Координаты: 37.4056, -122.0775     bot:\n\n```       container_name: domain-bot\n\n       image: ghcr.io/dignezzz/bot-reality:latest\n\n### Выбор языка       command: python bot.py\n\n```       environment:\n\n👤 Пользователь: /language         - BOT_TOKEN=${BOT_TOKEN}\n\n         - REDIS_HOST=redis\n\n🤖 Бот:         - REDIS_PORT=6379\n\n🌐 Выберите язык интерфейса:       depends_on:\n\n[🇷🇺 Русский] [🇬🇧 English]         - redis\n\n```       restart: unless-stopped\n\n       healthcheck:\n\n## 🏗️ Архитектура         test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/health\"]\n\n         interval: 30s\n\n```         timeout: 5s\n\n┌─────────────┐         retries: 3\n\n│  Telegram   │       logging:\n\n│   Users     │         driver: json-file\n\n└──────┬──────┘         options:\n\n       │           max-size: \"10m\"\n\n       ▼           max-file: \"3\"\n\n┌─────────────┐    ┌──────────────┐           compress: \"true\"\n\n│   bot.py    │───▶│ localization │     worker:\n\n│  (handlers) │    │   (i18n)     │       container_name: domain-worker\n\n└──────┬──────┘    └──────────────┘       image: ghcr.io/dignezzz/bot-reality:latest\n\n       │       command: python worker.py\n\n       ▼       environment:\n\n┌─────────────┐    ┌──────────────┐         - BOT_TOKEN=${BOT_TOKEN}\n\n│    Redis    │◀───│  redis_queue │         - REDIS_HOST=redis\n\n│  (cache +   │    │   (queue)    │         - REDIS_PORT=6379\n\n│   queue)    │    └──────────────┘       depends_on:\n\n└──────┬──────┘         - redis\n\n       │       restart: unless-stopped\n\n       ▼       healthcheck:\n\n┌─────────────┐    ┌──────────────┐         test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:8080/health\"]\n\n│  worker.py  │───▶│  checker.py  │         interval: 30s\n\n│  (async     │    │  (domain     │         timeout: 5s\n\n│  workers)   │    │   checks)    │         retries: 3\n\n└─────────────┘    └──────────────┘       deploy:\n\n                          │         replicas: 3\n\n                          ▼       logging:\n\n                   ┌──────────────┐         driver: json-file\n\n                   │   GeoIP2     │         options:\n\n                   │  (geoip2     │           max-size: \"10m\"\n\n                   │ integration) │           max-file: \"3\"\n\n                   └──────────────┘           compress: \"true\"\n\n```     redis:\n\n       container_name: domain-redis\n\n## 📦 Основные модули       image: redis:7\n\n       restart: unless-stopped\n\n- **bot.py** - Главный файл с обработчиками команд       healthcheck:\n\n- **worker.py** - Асинхронные воркеры для проверки доменов         test: [\"CMD\", \"redis-cli\", \"ping\"]\n\n- **checker.py** - Логика проверки доменов (DNS, TLS, HTTP, etc.)         interval: 10s\n\n- **redis_queue.py** - Управление очередью задач в Redis         timeout: 3s\n\n- **localization.py** - Система мультиязычности         retries: 5\n\n- **geoip2_integration.py** - Интеграция с GeoIP2       logging:\n\n- **analytics.py** - Сбор и анализ статистики         driver: json-file\n\n- **retry_logic.py** - Система повторных попыток         options:\n\n- **progress_tracker.py** - Прогресс-бары для операций           max-size: \"5m\"\n\n           max-file: \"2\"\n\n## 🔧 Настройка в @BotFather           compress: \"true\"\n\n   ```\n\n### Команды для @BotFather\n\n```4. Запустите контейнеры:\n\nstart - 🚀 Запустить бота   ```bash\n\nhelp - ℹ️ Показать справку   docker compose up -d\n\ncheck - 🔍 Краткая проверка домена   ```\n\nfull - 📄 Полная проверка домена\n\nip - 🌐 Информация об IP адресе5. Проверьте логи для подтверждения запуска:\n\nmode - ⚙️ Сменить режим вывода   ```bash\n\nhistory - 📜 История проверок   docker compose logs -f\n\nlanguage - 🌍 Выбрать язык   ```\n\nadmin - 🔐 Панель администратора\n\n```## � Лимиты и ограничения\n\n\n\n### Описание бота### Лимиты для пользователей\n\n```- **10 проверок в минуту** на пользователя\n\nБот для проверки доменов на пригодность для Reality/VLESS. - **100 проверок в день** на пользователя\n\nПроверяет DNS, TLS, HTTP/2, ping, безопасность. - **Автоматическая блокировка** при превышении лимитов\n\nОпределяет геолокацию IP. Поддержка RU/EN.\n\n```### Система наказаний\n\n- **5+ нарушений** → временная блокировка\n\nПолная настройка в файле `BOTFATHER_COMMANDS.txt`- **Прогрессивные тайм-ауты**: 1 мин → 5 мин → 15 мин → 1 час\n\n- **Автоматическое снятие** блокировок по истечении времени\n\n## 📚 Документация\n\n### Производительность\n\n- **MULTILANGUAGE.md** - Подробности о мультиязычности- **Асинхронная обработка** для высокой пропускной способности\n\n- **IMPROVEMENTS_CRITICAL.md** - Критические улучшения- **Redis кэширование** результатов на 1 час\n\n- **ALL_IMPROVEMENTS_SUMMARY.md** - Полная сводка всех обновлений- **Батч-обработка** для множественных проверок\n\n- **DEPLOYMENT_QUICK_GUIDE.md** - Быстрый гайд по деплою- **Автоматические повторы** при сбоях\n\n- **GEOIP_FEATURES.md** - Возможности GeoIP2\n\n## 🏗️ Архитектура\n\n## 🤝 Поддержка и обратная связь\n\n### Компоненты системы\n\n- **Вопросы**: [GitHub Issues](https://github.com/DigneZzZ/bot-reality/issues)```\n\n- **Предложения**: Pull Requests приветствуются┌─────────────┐    ┌─────────────┐    ┌─────────────┐\n\n- **Связь**: Telegram [@DigneZzZ](https://t.me/DigneZzZ)│   Telegram  │───▶│    Bot      │───▶│   Redis     │\n\n│   Updates   │    │  (bot.py)   │    │   Queue     │\n\n## 📄 Лицензия└─────────────┘    └─────────────┘    └─────────────┘\n\n                           │                   │\n\nMIT License. Подробности в файле [LICENSE](LICENSE).                           ▼                   ▼\n\n                   ┌─────────────┐    ┌─────────────┐\n\n## 🏆 Благодарности                   │ Analytics   │    │   Worker    │\n\n                   │ Collector   │    │ (worker.py) │\n\n- [Aiogram](https://github.com/aiogram/aiogram) - Telegram Bot API framework                   └─────────────┘    └─────────────┘\n\n- [Redis](https://redis.io/) - In-memory data store                           │                   │\n\n- [MaxMind](https://www.maxmind.com/) - GeoLite2 database                           ▼                   ▼\n\n- [Docker](https://docker.com/) - Containerization platform                   ┌─────────────┐    ┌─────────────┐\n\n                   │   Metrics   │    │   Domain    │\n\n---                   │  Storage    │    │  Checker    │\n\n                   └─────────────┘    └─────────────┘\n\n\u003cdiv align=\"center\"\u003e```\n\n\n\n**Made with ❤️ by [DigneZzZ](https://github.com/DigneZzZ)**### Модули\n\n- **`bot.py`** — основная логика бота и обработка команд\n\nЕсли проект полезен, поставьте ⭐!- **`worker.py`** — воркер для выполнения проверок доменов\n\n- **`checker.py`** — модуль проверки доменов (DNS, TLS, HTTP, etc.)\n\n\u003c/div\u003e- **`redis_queue.py`** — управление очередью задач в Redis\n\n- **`retry_logic.py`** — система повторных попыток с экспоненциальным backoff\n- **`progress_tracker.py`** — прогресс-бары и батч-обработка\n- **`analytics.py`** — сбор и анализ метрик использования\n\n## 🛠️ Локальная разработка\n\n### Требования\n- Python 3.9+\n- Redis 6.0+\n- Docker \u0026 Docker Compose\n\n### Установка для разработки\n1. Клонируйте репозиторий:\n   ```bash\n   git clone https://github.com/DigneZzZ/bot-reality.git\n   cd bot-reality\n   ```\n\n2. Создайте виртуальное окружение:\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # Linux/Mac\n   # или\n   venv\\Scripts\\activate     # Windows\n   ```\n\n3. Установите зависимости:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. Настройте переменные окружения в `.env`\n\n5. Запустите Redis:\n   ```bash\n   docker run -d -p 6379:6379 redis:7\n   ```\n\n6. Запустите бота и воркер:\n   ```bash\n   python bot.py \u0026\n   python worker.py\n   ```\n\n## �🛠 Локальный запуск без Docker\n\n1. Установите [Python 3.11+](https://www.python.org/downloads/) и [Redis](https://redis.io/docs/install/install-redis/).\n2. Клонируйте репозиторий:\n   ```bash\n   git clone https://github.com/dignezzz/bot-reality.git\n   cd bot-reality\n   ```\n3. Создайте виртуальное окружение и установите зависимости:\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # На Windows: venv\\Scripts\\activate\n   pip install -r requirements.txt\n   ```\n4. Настройте переменные окружения:\n   ```bash\n   export BOT_TOKEN=your-telegram-bot-token\n   export REDIS_HOST=localhost\n   export REDIS_PORT=6379\n   ```\n5. Запустите бота:\n   ```bash\n   python bot.py\n   ```\n6. В отдельном терминале запустите воркер:\n   ```bash\n   python worker.py\n   redis-cli --version\n   ```\n\n## 🔧 Настройка и мониторинг\n\n### Проверка работоспособности\n```bash\n# Статус контейнеров\ndocker-compose ps\n\n# Логи всех сервисов\ndocker-compose logs -f\n\n# Логи конкретного сервиса\ndocker-compose logs -f bot\ndocker-compose logs -f worker\n\n# Мониторинг Redis\ndocker exec -it domain-redis redis-cli monitor\n```\n\n### Статистика использования\n- Команда `/analytics` — детальная аналитика для администратора\n- Автоматический сбор метрик по пользователям и доменам\n- Отслеживание производительности и ошибок\n\n## 🤝 Вклад в проект\n\nМы приветствуем вклад в развитие проекта! \n\n### Как внести вклад:\n1. Форкните репозиторий\n2. Создайте ветку для новой функции (`git checkout -b feature/AmazingFeature`)\n3. Зафиксируйте изменения (`git commit -m 'Add some AmazingFeature'`)\n4. Отправьте ветку (`git push origin feature/AmazingFeature`)\n5. Откройте Pull Request\n\n### Сообщение об ошибках:\n- Используйте GitHub Issues для сообщения об ошибках\n- Предоставьте подробное описание проблемы\n- Включите логи и шаги для воспроизведения\n\n## 📄 Лицензия\n\nЭтот проект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).\n\n## 🏆 Благодарности\n\n- **[Aiogram](https://github.com/aiogram/aiogram)** — современная асинхронная библиотека для Telegram Bot API\n- **[Redis](https://redis.io/)** — быстрое хранилище данных в памяти\n- **[Docker](https://docker.com/)** — контейнеризация и оркестрация\n- **[OpenAI](https://openai.com/)** — ИИ-ассистент в разработке\n- **[OpeNode.xyz](https://openode.xyz/)** — поддержка проекта\n\n## 🚀 Что дальше?\n\n### Планируемые улучшения:\n- 🌐 **Веб-интерфейс** для управления ботом\n- 📊 **Расширенная аналитика** с графиками\n- 🔄 **API для интеграции** с внешними сервисами\n- 🎯 **Машинное обучение** для улучшения оценки доменов\n- 🔒 **Дополнительные проверки безопасности**\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**🌟 Если проект оказался полезным, поставьте звездочку!**\n\nMade with ❤️ by [DigneZzZ](https://github.com/DigneZzZ) and AI\n\n\u003c/div\u003e\n\n### Зависимости\n- `aiogram`: Асинхронный фреймворк для Telegram-ботов.\n- `redis`: Клиент для взаимодействия с Redis.\n- `httpx`, `h2`: Проверка HTTP/2 и HTTP/3.\n- `requests`, `python-whois`: Запросы к внешним API и WHOIS.\n- `ping3`, `dnspython`: Пинг и DNS-запросы.\n- `aiohttp`: Асинхронные HTTP-запросы.\n\nПолный список в `requirements.txt`.\n\n## 🤖 Использование бота\n\nНайдите бота в Telegram и начните взаимодействие:\n\n### Команды\n- `/start`: Приветственное сообщение с инлайн-кнопками.\n- `/check \u003cдомен\u003e`: Краткий отчёт (например, `/check example.com`).\n- `/full \u003cдомен\u003e`: Полный отчёт (например, `/full example.com`).\n- `/ping`: Проверка работоспособности бота.\n- `/history`: Последние 10 проверок пользователя.\n\n### Другие способы\n- Отправьте домен напрямую: `example.com` (краткий отчёт).\n- Отправьте несколько доменов через запятую или перенос строки:\n  ```\n  example.com, google.com\n  ```\n- Нажмите инлайн-кнопку \"Полный отчёт\" для получения детализированного результата.\n\n### Ограничения\n- **Скорость**: 10 проверок за 30 секунд.\n- **Дневной лимит**: 100 проверок на пользователя.\n- **Штрафы**: Некорректные запросы могут привести к временной блокировке (от 1 минуты до 1 часа).\n\n## 🔧 Настройка и оптимизация\n\n### Redis\nДля предотвращения сбоев Redis настройте параметр ядра Linux:\n```bash\nsudo sysctl vm.overcommit_memory=1\necho \"vm.overcommit_memory=1\" | sudo tee -a /etc/sysctl.conf\nsudo sysctl -p\n```\n\n### Логирование\nЛоги хранятся в файлах:\n- `bot.log`: Логи бота.\n- `worker.log`: Логи воркеров.\n- `checker.log`: Логи проверок.\n- `redis_queue.log`: Логи очереди.\n\nЛоги в Docker ограничены 10 МБ (3 файла с сжатием).\n\n### Healthcheck\n- Бот и воркеры: Проверка `/health` на порту 8080 (каждые 30 секунд).\n- Redis: Проверка `redis-cli ping` (каждые 10 секунд).\n\n## 🛠 CI/CD\n\nDocker-образы автоматически собираются и публикуются в [GitHub Container Registry](https://ghcr.io/dignezzz/bot-reality) через GitHub Actions. Конфигурация в `.github/workflows/docker.yml`.\n\n## 🔒 Безопасность\n\n- Храните `BOT_TOKEN` в `.env` и не публикуйте его.\n- Используйте переменные окружения вместо жёстко закодированных значений.\n- Регулярно обновляйте зависимости (`pip install -r requirements.txt --upgrade`).\n\n## 👨‍💻 Разработка\n\n1. Клонируйте репозиторий:\n   ```bash\n   git clone https://github.com/dignezzz/bot-reality.git\n   cd bot-reality\n   ```\n2. Скопируйте `.env.sample` в `.env` и настройте:\n   ```bash\n   cp .env.sample .env\n   nano .env\n   ```\n3. Соберите и запустите:\n   ```bash\n   docker compose up --build -d\n   ```\n\n## 📜 Лицензия\n\nРазработано [neonode.cc](https://neonode.cc). Лицензия: MIT. Свяжитесь для обратной связи или предложений!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdignezzz%2Fbot-reality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdignezzz%2Fbot-reality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdignezzz%2Fbot-reality/lists"}