An open API service indexing awesome lists of open source software.

https://github.com/dignezzz/bot-reality


https://github.com/dignezzz/bot-reality

reality remnawave telegram vless-reality vless-reality-vision xray-core xray-reality

Last synced: 6 months ago
JSON representation

Awesome Lists containing this project

README

          

# 🌐 Reality Checker Bot# Domain Reality Checker Bot

Современный Telegram-бот для проверки доменов на пригодность для Reality/VLESS прокси с поддержкой мультиязычности и геолокации IP-адресов.⚡ **Domain Reality Checker Bot** — это усовершенствованный Telegram-бот на базе Python и библиотеки Aiogram для проверки доменов на пригодность

- 🎯 **Контекстные ответы** — результаты приходят в нужную тему

## ✨ Основные возможности- 📱 **Организованность** — обсуждения не смешиваются между темами

- 🔄 **Поддержка всех команд** — работают команды с префиксом, упоминания и ответы

### 🔍 Проверка доменов

- **DNS** - разрешение A-записи (IPv4)## 💬 Умная работа в группах

- **TLS** - проверка версии (TLSv1.3), шифра, сертификата

- **HTTP** - поддержка HTTP/2, HTTP/3, TTFB, редиректы### 📋 Краткие отчёты с reply

- **Порты** - сканирование TCP портов (80, 443, 8443)- В группах бот всегда отвечает **через reply** на оригинальное сообщение

- **География** - определение страны, города, провайдера- Отправляется **краткий отчёт** для экономии места в чате

- **Безопасность** - проверка в чёрных списках Spamhaus- К краткому отчёту добавляется кнопка **"📄 Полный отчёт в ЛС"**

- **Ping** - измерение задержки до сервера

- **WHOIS** - информация о сроке действия домена### 📄 Полные отчёты в личных сообщениях

- **Оценка** - автоматический вердикт о пригодности для Reality- Полные отчёты **автоматически отправляются в ЛС** пользователя

- Команда `!full domain.com` в группе → полный отчёт приходит в ЛС

### 🌍 Геолокация IP-адресов- Кнопка "📄 Полный отчёт в ЛС" → **умная ссылка на бота** с автоматическим запросом

- Определение **страны и города** по IP- **Безопасность**: deep link работает для любого пользователя

- Информация о **провайдере/ISP**

- Получение **координат** (широта, долгота)💡 **Как это работает**: Кнопка содержит ссылку вида `https://t.me/botname?start=full_domain.com`, которая автоматически откроет бота и запросит полный отчёт. Никакой предварительной настройки не требуется!

- Поддержка **IPv4** адресов

- Работа с базой **GeoLite2-City**### 🔄 Поведение по типам чатов

| Тип чата | Краткий отчёт | Полный отчёт | Кнопка |

### 🌐 Мультиязычность|----------|---------------|--------------|---------|

- Интерфейс на **русском** и **английском** языках| **Личные сообщения** | В том же чате | В том же чате | "Полный отчёт" |

- Автоопределение языка из настроек Telegram| **Группы/Супергруппы** | Reply в группе | Отправка в ЛС | "📄 Полный отчёт в ЛС" |

- Переключение языка командой `/language`| **Темы в супергруппах** | Reply в теме | Отправка в ЛС | "📄 Полный отчёт в ЛС" |

- Сохранение выбора в Redis

## 🚀 Быстрый запуск с Dockereality/VLESS прокси. Бот работает асинхронно, использует Redis для управления очередью задач и кэширования результатов, а также предоставляет краткие и полные отчёты о проверке доменов.

### 💬 Работа в группах

- **Умные ответы** через reply в группах## ✨ Новые возможности

- **Краткие отчёты** в чате + inline кнопка "Полный в ЛС"

- **Полные отчёты** автоматически в личные сообщения### 🚀 Система повторных попыток (Retry Logic)

- Поддержка **тем в супергруппах**- **Exponential backoff** с настраиваемым jitter

- Команды с **префиксом** (!check, !full)- **Автоматические повторы** для Redis, Telegram API и проверки доменов

- **Упоминания** бота (@botname domain.com)- **Гибкая конфигурация** времени ожидания и количества попыток

- **Авторизация групп** через whitelist

### 📊 Батч-обработка с прогресс-барами

### ⚡ Производительность- **Автоматический прогресс-бар** для проверки 3+ доменов

- **Connection Pool** для Redis (35 подключений)- **Батч-обработка** по 3 домена за раз для оптимизации

- **Асинхронная обработка** задач- **Подробная статистика** выполнения (успешно, из кэша, ошибки)

- **Кэширование** результатов на 1 час

- **Graceful shutdown** с корректным закрытием ресурсов### 📈 Система аналитики

- **Батч-обработка** множественных доменов- **Сбор метрик** использования бота и проверок доменов

- **Прогресс-бары** для долгих операций- **Детальные отчеты** для администратора (/analytics)

- **Трекинг** популярных доменов и пользовательской активности

### 📊 Дополнительно

- **Аналитика** использования бота### 🔒 Безопасность для групповых чатов

- **История** последних 10 проверок- **Авторизация групп** через переменные окружения

- **Лимиты** запросов (защита от спама)- **Автоматический выход** из неавторизованных групп

- **Админ-панель** с управлением- **Гибкое управление** списком разрешенных групп

- **Inline кнопки** для удобной навигации

### 🧵 Поддержка тем в супергруппах

## 📋 Команды- **Умные ответы** в той же теме, где упомянули бота

- **Контекстная работа** с топиками Telegram

### Основные- **Организованное общение** в больших группах

- `/start` - Запустить бота

- `/help` - Показать справку### 🎛️ Групповой режим работы

- `/check <домен>` - Краткая проверка- **Команды с префиксом** (!check, !full, !help)

- `/full <домен>` - Полная проверка- **Упоминания бота** (@botname domain.com)

- `/ip <адрес>` - Информация об IP адресе ⭐ NEW- **Ответы на сообщения** бота с новыми доменами

- `/mode` - Сменить режим вывода (full/short)- **Настраиваемый префикс** команд

- `/history` - История проверок- **Умные ответы в группах**: краткие отчёты с reply + кнопка "Полный в ЛС"

- `/language` - Выбрать язык интерфейса- **Полные отчёты в ЛС**: автоматическая отправка полных отчётов в личные сообщения

### Групповые## 🔍 Что проверяет

- `!check <домен>` - Проверка в группе

- `!full <домен>` - Полная проверка в группеБот выполняет комплексную проверку доменов и возвращает отчёт, включающий:

- `!help` - Справка для группы

- `@botname <домен>` - Упоминание бота- 🌐 **DNS**: Разрешение A-записи (IPv4)

- 📡 **Скан портов**: Проверка открытых TCP-портов (80, 443, 8443)

### Админ-команды- 🌍 **География и ASN**: Геолокация IP, ASN и провайдер

- `/admin` - Панель администратора- 🚫 **Spamhaus**: Проверка IP в чёрных списках Spamhaus

- `/analytics` - Статистика использования- 🟢 **Ping**: Задержка до сервера (в миллисекундах)

- `/reset_queue` - Сбросить очередь- 🔒 **TLS**: Версия TLS (например, TLSv1.3), шифр, срок действия сертификата

- `/clearcache` - Очистить кэш- 🌐 **HTTP**: Поддержка HTTP/2 и HTTP/3, TTFB (время до первого байта), редиректы, сервер, наличие WAF и CDN

- `/groups` - Управление группами- 📄 **WHOIS**: Срок действия домена

- 🛰 **Оценка пригодности**: Вердикт, пригоден ли домен для Reality (учитывает отсутствие CDN, поддержку HTTP/2, TLSv1.3 и пинг < 50 мс)

## 🚀 Быстрый старт с Docker

### Пример краткого отчёта

### 1. Создайте docker-compose.yml```

```yaml🔍 Проверка: 35photo.pro:443

services:✅ A: 185.232.233.233

bot:🟢 Ping: ~25.0 ms

image: ghcr.io/dignezzz/bot-reality:latest 🔒 TLS

command: python bot.py✅ TLSv1.3 поддерживается

environment: 🌐 HTTP

- BOT_TOKEN=${BOT_TOKEN}❌ HTTP/2 не поддерживается

- ADMIN_ID=${ADMIN_ID}❌ HTTP/3 не поддерживается

- REDIS_HOST=redis🟢 WAF не обнаружен

- BOT_USERNAME=${BOT_USERNAME}🟢 CDN не обнаружен

depends_on: 🛰 Оценка пригодности

- redis❌ Не пригоден: HTTP/2 отсутствует

restart: unless-stopped[Полный отчёт]

```

worker:

image: ghcr.io/dignezzz/bot-reality:latest### Пример полного отчёта

command: python worker.py```

environment:🔍 Проверка: google.com:443

- BOT_TOKEN=${BOT_TOKEN}🌐 DNS

- REDIS_HOST=redis✅ A: 142.250.74.14

depends_on:📡 Скан портов

- redis🟢 TCP 80 открыт

restart: unless-stopped🟢 TCP 443 открыт

deploy:🔴 TCP 8443 закрыт

replicas: 3🌍 География и ASN

📍 IP: SE / Stockholm County / Stockholm

redis:🏢 ASN: AS15169 Google LLC

image: redis:7-alpine✅ Не найден в Spamhaus

restart: unless-stopped🟢 Ping: ~7.7 ms

```🔒 TLS

✅ TLSv1.3 поддерживается

### 2. Создайте .env файл✅ TLS_AES_256_GCM_SHA384 используется

```env⏳ TLS сертификат истекает через 65 дн.

BOT_TOKEN=ваш_токен_от_BotFather🌐 HTTP

ADMIN_ID=ваш_telegram_id✅ HTTP/2 поддерживается

BOT_USERNAME=имя_вашего_бота✅ HTTP/3 (h3) поддерживается

```⏱️ TTFB: 0.13 сек

🔁 Redirect: https://www.google.com/

### 3. Запустите🧾 Сервер: Google Web Server

```bash🟢 WAF не обнаружен

docker-compose up -d⚠️ CDN обнаружен: Google

```📄 WHOIS

📆 Срок действия: 2028-09-14T04:00:00

### 4. Проверьте логи🛰 Оценка пригодности

```bash❌ Не пригоден: CDN обнаружен (Google)

docker-compose logs -f```

```

## � Команды бота

## ⚙️ Переменные окружения

### Пользовательские команды

### Обязательные- `/start` — Приветствие и основное меню

```env- `/check ` — Краткая проверка домена

BOT_TOKEN= # Токен от @BotFather- `/full ` — Полная проверка домена

ADMIN_ID= # Telegram ID администратора- `/mode` — Переключить режим вывода (краткий/полный)

BOT_USERNAME= # Имя бота (для deep links)- `/history` — Показать последние 10 проверок

```

### Групповые команды

### Redis- `!check ` — Краткая проверка в группе

```env- `!full ` — Полная проверка в группе

REDIS_HOST=redis # Хост Redis (по умолчанию: redis)- `!help` — Справка по командам в группе

REDIS_PORT=6379 # Порт Redis- `@botname ` — Упоминание бота для проверки

REDIS_PASSWORD= # Пароль (если есть)- Ответ на сообщение бота с новым доменом

```

### Административные команды

### Групповой режим- `/adminhelp` — Список всех админ-команд

```env- `/reset_queue` — Сбросить очередь проверок

GROUP_MODE_ENABLED=true # Включить работу в группах- `/clearcache` — Очистить кэш результатов

GROUP_COMMAND_PREFIX=! # Префикс команд- `/analytics` — Показать аналитику использования

GROUP_OUTPUT_MODE=short # short или full- `/groups` — Управление авторизованными группами

AUTHORIZED_GROUPS=-100123,-100456 # ID разрешенных групп (через запятую)- `/groups_add ` — Добавить группу в авторизованные

AUTO_LEAVE_UNAUTHORIZED=false # Автоматически покидать неразрешенные группы- `/groups_remove ` — Удалить группу из авторизованных

```- `/groups_current` — Показать ID текущей группы

### Лимиты## 🤖 Настройка бота в @BotFather

```env

PRIVATE_RATE_LIMIT_PER_MINUTE=10 # Проверок в минуту (личка)### Быстрая настройка команд

PRIVATE_DAILY_LIMIT=100 # Проверок в день (личка)Полная заготовка команд для настройки в @BotFather находится в файле [`BOTFATHER_COMMANDS.txt`](BOTFATHER_COMMANDS.txt).

GROUP_RATE_LIMIT_MINUTES=5 # Интервал между проверками в группе

GROUP_DAILY_LIMIT=50 # Проверок в день (группа)#### Основные команды для @BotFather:

``````

/setcommands

### GeoIP2start - 🚀 Запустить бота и показать меню

```envcheck - 🔍 Краткая проверка домена

GEOIP2_DB_PATH=GeoLite2-City.mmdb # Путь к базе GeoIP2full - 📄 Полная проверка домена

GEOIP2_AUTO_UPDATE=true # Автообновление базыmode - ⚙️ Переключить режим вывода

```history - 📜 Показать последние проверки

```

### Дополнительные

```env#### Настройка описания:

SAVE_APPROVED_DOMAINS=false # Сохранять пригодные домены```

AUTO_DELETE_GROUP_MESSAGES=true # Автоудаление сообщений в группах/setdescription

AUTO_DELETE_TIMEOUT=300 # Время до удаления (секунды)Бот для проверки доменов на пригодность для Reality/VLESS прокси. Проверяет DNS, TLS, HTTP/2, ping, WHOIS и выдает краткие/полные отчеты. Поддерживает работу в группах с умными ответами.

``````

## 💻 Локальная разработка#### Рекомендуемые настройки:

- **Групповой режим**: Включить возможность добавления в группы

### Требования- **Приватность**: `ENABLED` (бот видит только команды и упоминания)

- Python 3.9+- **Инлайн-режим**: По желанию для расширенного функционала

- Redis 6.0+

- GeoLite2-City.mmdb (для функции /ip)💡 **Полный список команд и настроек** смотрите в [`BOTFATHER_COMMANDS.txt`](BOTFATHER_COMMANDS.txt)

### Установка## ⚙️ Переменные окружения

```bash

# Клонировать репозиторий### Основные настройки

git clone https://github.com/DigneZzZ/bot-reality.git```env

cd bot-realityBOT_TOKEN=your-telegram-bot-token # Токен бота от @BotFather

ADMIN_ID=123456789 # ID администратора

# Создать виртуальное окружениеREDIS_HOST=redis # Хост Redis

python -m venv venvREDIS_PORT=6379 # Порт Redis

source venv/bin/activate # Linux/MacREDIS_PASSWORD= # Пароль Redis (опционально)

# или venv\Scripts\activate # Windows```

# Установить зависимости### Настройки групповой работы

pip install -r requirements.txt```env

GROUP_MODE_ENABLED=true # Включить работу в группах

# Скопировать .envGROUP_COMMAND_PREFIX=! # Префикс команд в группах

cp .env.sample .envGROUP_OUTPUT_MODE=short # Режим вывода в группах: short (краткий) или full (полный)

# Отредактировать .envAUTHORIZED_GROUPS=-1001234567890,-1009876543210 # ID разрешенных групп

AUTO_LEAVE_UNAUTHORIZED=false # Автоматически покидать неавторизованные группы

# Запустить RedisBOT_USERNAME=your_bot_username # Имя пользователя бота для deep links

docker run -d -p 6379:6379 redis:7-alpine```

# Запустить бота### Дополнительные настройки

python bot.py```env

SAVE_APPROVED_DOMAINS=false # Сохранять список пригодных доменов

# В другом терминале запустить worker```

python worker.py

```## 🔒 Настройка безопасности для групп

### Загрузка GeoIP2 базы### 1. Получение ID группы

```bashДобавьте бота в группу и используйте команду:

# Скачать GeoLite2-City.mmdb```

python download_geoip2.py/groups_current

```

# Или вручную с https://dev.maxmind.com/geoip/geolite2-free-geolocation-data

```### 2. Авторизация группы

Добавьте ID в переменную окружения:

## 📊 Примеры использования```env

AUTHORIZED_GROUPS=-1001234567890,-1009876543210

### Проверка домена```

```

👤 Пользователь: /check google.com### 3. Автоматический выход

Для автоматического выхода из неавторизованных групп:

🤖 Бот:```env

🔍 Проверка: google.comAUTO_LEAVE_UNAUTHORIZED=true

✅ A: 142.250.74.14```

🟢 Ping: ~7.7 ms

🔒 TLS: TLSv1.3## 🧵 Работа с темами в супергруппах

✅ HTTP/2 поддерживается

✅ HTTP/3 поддерживаетсяБот автоматически определяет тему (топик), в которой его упомянули, и отвечает именно в ней:

🟢 WAF не обнаружен

⚠️ CDN обнаружен: Google- 🎯 **Контекстные ответы** — результаты приходят в нужную тему

❌ Не пригоден: CDN обнаружен- 📱 **Организованность** — обсуждения не смешиваются между темами

[📄 Полный отчет] [🔄 Перепроверить]- 🔄 **Поддержка всех команд** — работают команды с префиксом, упоминания и ответы

```

## �🚀 Быстрый запуск с Docker

### Информация об IP

```1. Убедитесь, что установлены [Docker](https://docs.docker.com/get-docker/) и [Docker Compose](https://docs.docker.com/compose/install/).

👤 Пользователь: /ip 8.8.8.8

2. Создайте файл `.env` с токеном Telegram-бота, полученным от `@BotFather`:

🤖 Бот: ```bash

🌐 Информация об IP адресе echo "BOT_TOKEN=your-telegram-bot-token" > .env

```

🌐 IP адрес: 8.8.8.8

🌍 Страна: United States (US)3. Создайте файл `docker-compose.yml`:

🏙️ Город: Mountain View ```yaml

🔌 Провайдер: Google LLC services:

📍 Координаты: 37.4056, -122.0775 bot:

``` container_name: domain-bot

image: ghcr.io/dignezzz/bot-reality:latest

### Выбор языка command: python bot.py

``` environment:

👤 Пользователь: /language - BOT_TOKEN=${BOT_TOKEN}

- REDIS_HOST=redis

🤖 Бот: - REDIS_PORT=6379

🌐 Выберите язык интерфейса: depends_on:

[🇷🇺 Русский] [🇬🇧 English] - redis

``` restart: unless-stopped

healthcheck:

## 🏗️ Архитектура test: ["CMD", "curl", "-f", "http://localhost:8080/health"]

interval: 30s

``` timeout: 5s

┌─────────────┐ retries: 3

│ Telegram │ logging:

│ Users │ driver: json-file

└──────┬──────┘ options:

│ max-size: "10m"

▼ max-file: "3"

┌─────────────┐ ┌──────────────┐ compress: "true"

│ bot.py │───▶│ localization │ worker:

│ (handlers) │ │ (i18n) │ container_name: domain-worker

└──────┬──────┘ └──────────────┘ image: ghcr.io/dignezzz/bot-reality:latest

│ command: python worker.py

▼ environment:

┌─────────────┐ ┌──────────────┐ - BOT_TOKEN=${BOT_TOKEN}

│ Redis │◀───│ redis_queue │ - REDIS_HOST=redis

│ (cache + │ │ (queue) │ - REDIS_PORT=6379

│ queue) │ └──────────────┘ depends_on:

└──────┬──────┘ - redis

│ restart: unless-stopped

▼ healthcheck:

┌─────────────┐ ┌──────────────┐ test: ["CMD", "curl", "-f", "http://localhost:8080/health"]

│ worker.py │───▶│ checker.py │ interval: 30s

│ (async │ │ (domain │ timeout: 5s

│ workers) │ │ checks) │ retries: 3

└─────────────┘ └──────────────┘ deploy:

│ replicas: 3

▼ logging:

┌──────────────┐ driver: json-file

│ GeoIP2 │ options:

│ (geoip2 │ max-size: "10m"

│ integration) │ max-file: "3"

└──────────────┘ compress: "true"

``` redis:

container_name: domain-redis

## 📦 Основные модули image: redis:7

restart: unless-stopped

- **bot.py** - Главный файл с обработчиками команд healthcheck:

- **worker.py** - Асинхронные воркеры для проверки доменов test: ["CMD", "redis-cli", "ping"]

- **checker.py** - Логика проверки доменов (DNS, TLS, HTTP, etc.) interval: 10s

- **redis_queue.py** - Управление очередью задач в Redis timeout: 3s

- **localization.py** - Система мультиязычности retries: 5

- **geoip2_integration.py** - Интеграция с GeoIP2 logging:

- **analytics.py** - Сбор и анализ статистики driver: json-file

- **retry_logic.py** - Система повторных попыток options:

- **progress_tracker.py** - Прогресс-бары для операций max-size: "5m"

max-file: "2"

## 🔧 Настройка в @BotFather compress: "true"

```

### Команды для @BotFather

```4. Запустите контейнеры:

start - 🚀 Запустить бота ```bash

help - ℹ️ Показать справку docker compose up -d

check - 🔍 Краткая проверка домена ```

full - 📄 Полная проверка домена

ip - 🌐 Информация об IP адресе5. Проверьте логи для подтверждения запуска:

mode - ⚙️ Сменить режим вывода ```bash

history - 📜 История проверок docker compose logs -f

language - 🌍 Выбрать язык ```

admin - 🔐 Панель администратора

```## � Лимиты и ограничения

### Описание бота### Лимиты для пользователей

```- **10 проверок в минуту** на пользователя

Бот для проверки доменов на пригодность для Reality/VLESS. - **100 проверок в день** на пользователя

Проверяет DNS, TLS, HTTP/2, ping, безопасность. - **Автоматическая блокировка** при превышении лимитов

Определяет геолокацию IP. Поддержка RU/EN.

```### Система наказаний

- **5+ нарушений** → временная блокировка

Полная настройка в файле `BOTFATHER_COMMANDS.txt`- **Прогрессивные тайм-ауты**: 1 мин → 5 мин → 15 мин → 1 час

- **Автоматическое снятие** блокировок по истечении времени

## 📚 Документация

### Производительность

- **MULTILANGUAGE.md** - Подробности о мультиязычности- **Асинхронная обработка** для высокой пропускной способности

- **IMPROVEMENTS_CRITICAL.md** - Критические улучшения- **Redis кэширование** результатов на 1 час

- **ALL_IMPROVEMENTS_SUMMARY.md** - Полная сводка всех обновлений- **Батч-обработка** для множественных проверок

- **DEPLOYMENT_QUICK_GUIDE.md** - Быстрый гайд по деплою- **Автоматические повторы** при сбоях

- **GEOIP_FEATURES.md** - Возможности GeoIP2

## 🏗️ Архитектура

## 🤝 Поддержка и обратная связь

### Компоненты системы

- **Вопросы**: [GitHub Issues](https://github.com/DigneZzZ/bot-reality/issues)```

- **Предложения**: Pull Requests приветствуются┌─────────────┐ ┌─────────────┐ ┌─────────────┐

- **Связь**: Telegram [@DigneZzZ](https://t.me/DigneZzZ)│ Telegram │───▶│ Bot │───▶│ Redis │

│ Updates │ │ (bot.py) │ │ Queue │

## 📄 Лицензия└─────────────┘ └─────────────┘ └─────────────┘

│ │

MIT License. Подробности в файле [LICENSE](LICENSE). ▼ ▼

┌─────────────┐ ┌─────────────┐

## 🏆 Благодарности │ Analytics │ │ Worker │

│ Collector │ │ (worker.py) │

- [Aiogram](https://github.com/aiogram/aiogram) - Telegram Bot API framework └─────────────┘ └─────────────┘

- [Redis](https://redis.io/) - In-memory data store │ │

- [MaxMind](https://www.maxmind.com/) - GeoLite2 database ▼ ▼

- [Docker](https://docker.com/) - Containerization platform ┌─────────────┐ ┌─────────────┐

│ Metrics │ │ Domain │

--- │ Storage │ │ Checker │

└─────────────┘ └─────────────┘

```

**Made with ❤️ by [DigneZzZ](https://github.com/DigneZzZ)**### Модули

- **`bot.py`** — основная логика бота и обработка команд

Если проект полезен, поставьте ⭐!- **`worker.py`** — воркер для выполнения проверок доменов

- **`checker.py`** — модуль проверки доменов (DNS, TLS, HTTP, etc.)

- **`redis_queue.py`** — управление очередью задач в Redis

- **`retry_logic.py`** — система повторных попыток с экспоненциальным backoff
- **`progress_tracker.py`** — прогресс-бары и батч-обработка
- **`analytics.py`** — сбор и анализ метрик использования

## 🛠️ Локальная разработка

### Требования
- Python 3.9+
- Redis 6.0+
- Docker & Docker Compose

### Установка для разработки
1. Клонируйте репозиторий:
```bash
git clone https://github.com/DigneZzZ/bot-reality.git
cd bot-reality
```

2. Создайте виртуальное окружение:
```bash
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows
```

3. Установите зависимости:
```bash
pip install -r requirements.txt
```

4. Настройте переменные окружения в `.env`

5. Запустите Redis:
```bash
docker run -d -p 6379:6379 redis:7
```

6. Запустите бота и воркер:
```bash
python bot.py &
python worker.py
```

## �🛠 Локальный запуск без Docker

1. Установите [Python 3.11+](https://www.python.org/downloads/) и [Redis](https://redis.io/docs/install/install-redis/).
2. Клонируйте репозиторий:
```bash
git clone https://github.com/dignezzz/bot-reality.git
cd bot-reality
```
3. Создайте виртуальное окружение и установите зависимости:
```bash
python -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
pip install -r requirements.txt
```
4. Настройте переменные окружения:
```bash
export BOT_TOKEN=your-telegram-bot-token
export REDIS_HOST=localhost
export REDIS_PORT=6379
```
5. Запустите бота:
```bash
python bot.py
```
6. В отдельном терминале запустите воркер:
```bash
python worker.py
redis-cli --version
```

## 🔧 Настройка и мониторинг

### Проверка работоспособности
```bash
# Статус контейнеров
docker-compose ps

# Логи всех сервисов
docker-compose logs -f

# Логи конкретного сервиса
docker-compose logs -f bot
docker-compose logs -f worker

# Мониторинг Redis
docker exec -it domain-redis redis-cli monitor
```

### Статистика использования
- Команда `/analytics` — детальная аналитика для администратора
- Автоматический сбор метрик по пользователям и доменам
- Отслеживание производительности и ошибок

## 🤝 Вклад в проект

Мы приветствуем вклад в развитие проекта!

### Как внести вклад:
1. Форкните репозиторий
2. Создайте ветку для новой функции (`git checkout -b feature/AmazingFeature`)
3. Зафиксируйте изменения (`git commit -m 'Add some AmazingFeature'`)
4. Отправьте ветку (`git push origin feature/AmazingFeature`)
5. Откройте Pull Request

### Сообщение об ошибках:
- Используйте GitHub Issues для сообщения об ошибках
- Предоставьте подробное описание проблемы
- Включите логи и шаги для воспроизведения

## 📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробности в файле [LICENSE](LICENSE).

## 🏆 Благодарности

- **[Aiogram](https://github.com/aiogram/aiogram)** — современная асинхронная библиотека для Telegram Bot API
- **[Redis](https://redis.io/)** — быстрое хранилище данных в памяти
- **[Docker](https://docker.com/)** — контейнеризация и оркестрация
- **[OpenAI](https://openai.com/)** — ИИ-ассистент в разработке
- **[OpeNode.xyz](https://openode.xyz/)** — поддержка проекта

## 🚀 Что дальше?

### Планируемые улучшения:
- 🌐 **Веб-интерфейс** для управления ботом
- 📊 **Расширенная аналитика** с графиками
- 🔄 **API для интеграции** с внешними сервисами
- 🎯 **Машинное обучение** для улучшения оценки доменов
- 🔒 **Дополнительные проверки безопасности**

---

**🌟 Если проект оказался полезным, поставьте звездочку!**

Made with ❤️ by [DigneZzZ](https://github.com/DigneZzZ) and AI

### Зависимости
- `aiogram`: Асинхронный фреймворк для Telegram-ботов.
- `redis`: Клиент для взаимодействия с Redis.
- `httpx`, `h2`: Проверка HTTP/2 и HTTP/3.
- `requests`, `python-whois`: Запросы к внешним API и WHOIS.
- `ping3`, `dnspython`: Пинг и DNS-запросы.
- `aiohttp`: Асинхронные HTTP-запросы.

Полный список в `requirements.txt`.

## 🤖 Использование бота

Найдите бота в Telegram и начните взаимодействие:

### Команды
- `/start`: Приветственное сообщение с инлайн-кнопками.
- `/check <домен>`: Краткий отчёт (например, `/check example.com`).
- `/full <домен>`: Полный отчёт (например, `/full example.com`).
- `/ping`: Проверка работоспособности бота.
- `/history`: Последние 10 проверок пользователя.

### Другие способы
- Отправьте домен напрямую: `example.com` (краткий отчёт).
- Отправьте несколько доменов через запятую или перенос строки:
```
example.com, google.com
```
- Нажмите инлайн-кнопку "Полный отчёт" для получения детализированного результата.

### Ограничения
- **Скорость**: 10 проверок за 30 секунд.
- **Дневной лимит**: 100 проверок на пользователя.
- **Штрафы**: Некорректные запросы могут привести к временной блокировке (от 1 минуты до 1 часа).

## 🔧 Настройка и оптимизация

### Redis
Для предотвращения сбоев Redis настройте параметр ядра Linux:
```bash
sudo sysctl vm.overcommit_memory=1
echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
```

### Логирование
Логи хранятся в файлах:
- `bot.log`: Логи бота.
- `worker.log`: Логи воркеров.
- `checker.log`: Логи проверок.
- `redis_queue.log`: Логи очереди.

Логи в Docker ограничены 10 МБ (3 файла с сжатием).

### Healthcheck
- Бот и воркеры: Проверка `/health` на порту 8080 (каждые 30 секунд).
- Redis: Проверка `redis-cli ping` (каждые 10 секунд).

## 🛠 CI/CD

Docker-образы автоматически собираются и публикуются в [GitHub Container Registry](https://ghcr.io/dignezzz/bot-reality) через GitHub Actions. Конфигурация в `.github/workflows/docker.yml`.

## 🔒 Безопасность

- Храните `BOT_TOKEN` в `.env` и не публикуйте его.
- Используйте переменные окружения вместо жёстко закодированных значений.
- Регулярно обновляйте зависимости (`pip install -r requirements.txt --upgrade`).

## 👨‍💻 Разработка

1. Клонируйте репозиторий:
```bash
git clone https://github.com/dignezzz/bot-reality.git
cd bot-reality
```
2. Скопируйте `.env.sample` в `.env` и настройте:
```bash
cp .env.sample .env
nano .env
```
3. Соберите и запустите:
```bash
docker compose up --build -d
```

## 📜 Лицензия

Разработано [neonode.cc](https://neonode.cc). Лицензия: MIT. Свяжитесь для обратной связи или предложений!