Skip to content

DigneZzZ/bot-reality

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 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```


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

✅ 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 <domain> — Краткая проверка домена

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

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

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


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

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

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

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

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

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 <ID> — Добавить группу в авторизованные

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

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

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

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 - 🚀 Запустить бота и показать меню


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

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

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

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


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

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

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

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

Добавьте 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:


       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


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    │

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

<div align="center">```



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

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

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

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

</div>- **`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
  1. Создайте виртуальное окружение:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    # или
    venv\Scripts\activate     # Windows
  2. Установите зависимости:

    pip install -r requirements.txt
  3. Настройте переменные окружения в .env

  4. Запустите Redis:

    docker run -d -p 6379:6379 redis:7
  5. Запустите бота и воркер:

    python bot.py &
    python worker.py

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

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

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

Проверка работоспособности

# Статус контейнеров
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.

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

  • Aiogram — современная асинхронная библиотека для Telegram Bot API
  • Redis — быстрое хранилище данных в памяти
  • Docker — контейнеризация и оркестрация
  • OpenAI — ИИ-ассистент в разработке
  • OpeNode.xyz — поддержка проекта

🚀 Что дальше?

Планируемые улучшения:

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

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

Made with ❤️ by 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:

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 через GitHub Actions. Конфигурация в .github/workflows/docker.yml.

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

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

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

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

📜 Лицензия

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

Releases

No releases published

Packages