✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
193 lines
7.1 KiB
Markdown
193 lines
7.1 KiB
Markdown
# Домовой бот - Структура проекта
|
||
|
||
## 📁 Структура файлов
|
||
|
||
```
|
||
domovoy_bot/
|
||
├── config.py # Конфигурация (токены, настройки)
|
||
├── main.py # Точка входа
|
||
├── requirements.txt # Зависимости
|
||
├── .env # Переменные окружения (не в git!)
|
||
├── .env.example # Пример .env
|
||
├── .gitignore
|
||
│
|
||
├── database/
|
||
│ ├── __init__.py
|
||
│ ├── db.py # Подключение к БД
|
||
│ ├── models.py # SQLAlchemy модели
|
||
│ └── init_db.py # Скрипт инициализации БД
|
||
│
|
||
├── handlers/
|
||
│ ├── __init__.py
|
||
│ ├── admin.py # Админские команды (статистика, шпионы)
|
||
│ ├── users.py # Пользовательские команды
|
||
│ ├── verification.py # Верификация жильцов
|
||
│ └── chat_monitor.py # Мониторинг чата
|
||
│
|
||
├── services/
|
||
│ ├── __init__.py
|
||
│ ├── spy_detector.py # Детект «шпионов» УК
|
||
│ ├── analytics.py # Аналитика и экспорт JSON
|
||
│ ├── notifications.py # Уведомления жильцам
|
||
│ └── scheduler.py # Планировщик задач (cron)
|
||
│
|
||
├── keyboards/
|
||
│ ├── __init__.py
|
||
│ ├── inline.py # Inline-кнопки
|
||
│ └── reply.py # Reply-кнопки
|
||
│
|
||
├── utils/
|
||
│ ├── __init__.py
|
||
│ ├── validators.py # Валидация данных
|
||
│ ├── formatters.py # Форматирование сообщений
|
||
│ └── decorators.py # Декораторы (admin_only и т.д.)
|
||
│
|
||
├── data/
|
||
│ ├── phones.json # Телефоны экстренных служб
|
||
│ ├── spies_patterns.json # Паттерны поведения шпионов
|
||
│ └── templates/ # Шаблоны сообщений
|
||
│
|
||
├── logs/ # Логи бота
|
||
├── exports/ # JSON экспорты чата
|
||
└── backups/ # Бэкапы БД
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
```bash
|
||
# 1. Клонировать/создать структуру
|
||
cd domovoy_bot
|
||
|
||
# 2. Создать виртуальное окружение
|
||
python3 -m venv venv
|
||
source venv/bin/activate # Linux
|
||
# или
|
||
venv\Scripts\activate # Windows
|
||
|
||
# 3. Установить зависимости
|
||
pip install -r requirements.txt
|
||
|
||
# 4. Настроить окружение
|
||
cp .env.example .env
|
||
# Отредактировать .env, вставить токен бота
|
||
|
||
# 5. Инициализировать БД
|
||
python database/init_db.py
|
||
|
||
# 6. Запустить бота
|
||
python main.py
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 Зависимости (requirements.txt)
|
||
|
||
```
|
||
aiogram==3.6.0 # Telegram бот (асинхронный)
|
||
sqlalchemy==2.0.23 # Работа с БД
|
||
aiosqlite==0.19.0 # SQLite для начала
|
||
apscheduler==3.10.4 # Планировщик задач
|
||
python-dotenv==1.0.0 # Переменные окружения
|
||
pandas==2.1.4 # Аналитика данных
|
||
aiohttp==3.9.1 # HTTP запросы
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Конфигурация (.env)
|
||
|
||
```ini
|
||
# Telegram
|
||
BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
|
||
ADMIN_CHAT_ID=-1001234567890 # ID основного чата
|
||
ADMIN_USER_ID=123456789 # Твой Telegram ID
|
||
|
||
# База данных
|
||
DATABASE_PATH=./database/domovoy.db
|
||
|
||
# Экспорт
|
||
EXPORT_DIR=./exports
|
||
EXPORT_SCHEDULE=0 3 * * 0 # Каждое воскресенье в 03:00
|
||
|
||
# Детект шпионов
|
||
SPY_DETECTION_ENABLED=true
|
||
SPY_ALERT_USER_ID=123456789 # Куда слать тревоги
|
||
|
||
# Логирование
|
||
LOG_LEVEL=INFO
|
||
LOG_FILE=./logs/bot.log
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Админские функции (только тебе)
|
||
|
||
| Команда | Описание |
|
||
|---------|----------|
|
||
| `/admin` | Главное меню админа |
|
||
| `/stats` | Статистика чата за период |
|
||
| `/spies` | Подозрительные аккаунты |
|
||
| `/export` | Принудительный экспорт JSON |
|
||
| `/users` | Список всех жильцов |
|
||
| `/unverified` | Непроверенные участники |
|
||
| `/activity` | Рейтинг активности |
|
||
| `/broadcast` | Рассылка всем жильцам |
|
||
|
||
---
|
||
|
||
## 📱 Пользовательские команды (жильцам)
|
||
|
||
| Команда | Кнопка | Описание |
|
||
|---------|--------|----------|
|
||
| `/старт` | — | Регистрация |
|
||
| `/помощь` | 🔘 Помощь | Список команд |
|
||
| `/телефон` | 📞 Телефоны | Экстренные службы |
|
||
| `/мастера` | 🔘 Мастера | Сантехники/электрики |
|
||
| `/график` | 🔘 График | Отключения воды/света |
|
||
| `/объявления` | 🔘 Объявления | Новости дома |
|
||
| `/продам` | 🔘 Продать | Разместить объявление |
|
||
| `/моя_квартира` | 🔘 Моя квартира | Проверка привязки |
|
||
|
||
---
|
||
|
||
## 🕵️ Детект шпионов — алгоритм
|
||
|
||
Бот отслеживает в фоне и присваивает «рейтинг подозрительности» (0-100):
|
||
|
||
```
|
||
Факторы:
|
||
├─ Аккаунт создан < 7 дней: +20
|
||
├─ Нет аватарки: +10
|
||
├─ Ник вида user12345: +15
|
||
├─ Не прошёл верификацию > 24ч: +25
|
||
├─ Пишет только провокации: +30
|
||
├─ Активность 9:00-18:00 пн-пт: +15
|
||
├─ Мультиаккаунт (same device): +50
|
||
└─ Жалобы от жильцов: +10 за каждую
|
||
|
||
Пороги:
|
||
├─ 0-30: Норма (зелёный)
|
||
├─ 31-60: Подозрительно (жёлтый) → пометка в базе
|
||
└─ 61-100: Шпион! (красный) → уведомление админу
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 Следующие шаги
|
||
|
||
1. ✅ Создать структуру файлов
|
||
2. ✅ Написать `config.py` и `requirements.txt`
|
||
3. ✅ Создать модели БД (`database/models.py`)
|
||
4. ✅ Написать базового бота (`main.py`)
|
||
5. ✅ Реализовать верификацию (`handlers/verification.py`)
|
||
6. ✅ Сделать админские команды (`handlers/admin.py`)
|
||
7. ✅ Детект шпионов (`services/spy_detector.py`)
|
||
8. ✅ Экспорт JSON (`services/analytics.py`)
|
||
9. ✅ Инлайн-меню для жильцов (`keyboards/inline.py`)
|
||
10. ✅ Телефоны служб (`data/phones.json`)
|
||
|
||
---
|
||
|
||
**Готов начать? Создаю файлы!**
|