✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
438 lines
12 KiB
Markdown
438 lines
12 KiB
Markdown
# 🚫 Чёрный список ссылок — v1.2
|
||
|
||
**Версия:** v1.2
|
||
**Дата:** 26 февраля 2026 г.
|
||
**Статус:** ✅ Реализовано
|
||
|
||
---
|
||
|
||
## 📋 Описание
|
||
|
||
Автоматическая система защиты чата от спама и запрещённых ссылок. Бот проверяет все сообщения, удаляет спам, предупреждает нарушителей и банит при достижении лимита предупреждений.
|
||
|
||
---
|
||
|
||
## 🎯 Возможности
|
||
|
||
- ✅ Проверка всех сообщений на запрещённые ссылки
|
||
- ✅ Чёрный список доменов, паттернов, ключевых слов
|
||
- ✅ Авто-удаление спам-сообщений
|
||
- ✅ Система предупреждений (3 → бан)
|
||
- ✅ Уведомление админа о каждом случае
|
||
- ✅ Гибкие настройки (удаление, предупреждения, бан)
|
||
- ✅ Исключения для админов
|
||
|
||
---
|
||
|
||
## 🛡️ Что блокируется
|
||
|
||
### 1. Домены из чёрного списка
|
||
```
|
||
spam.com
|
||
fake-giveaway.xyz
|
||
phishing-site.com
|
||
...
|
||
```
|
||
|
||
### 2. Паттерны ссылок
|
||
```
|
||
t.me/spam_
|
||
vk.com/scam_
|
||
bit.ly/spam
|
||
```
|
||
|
||
### 3. Ключевые слова
|
||
```
|
||
выигрыш в лотерею
|
||
бесплатный биткоин
|
||
заработок без вложений
|
||
гарантированный доход
|
||
```
|
||
|
||
---
|
||
|
||
## 📱 Команды админа
|
||
|
||
### Управление доменами:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/add_domain <домен>` | Добавить домен в ЧС | `/add_domain spam.com` |
|
||
| `/remove_domain <домен>` | Удалить домен из ЧС | `/remove_domain spam.com` |
|
||
| `/domains` | Показать все домены | `/domains` |
|
||
|
||
### Управление паттернами:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/add_pattern <паттерн>` | Добавить паттерн в ЧС | `/add_pattern t.me/spam_` |
|
||
| `/remove_pattern <паттерн>` | Удалить паттерн из ЧС | `/remove_pattern t.me/spam_` |
|
||
| `/patterns` | Показать все паттерны | `/patterns` |
|
||
|
||
### Управление ключевыми словами:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/add_keyword <слово>` | Добавить ключ в ЧС | `/add_keyword выигрыш` |
|
||
| `/remove_keyword <слово>` | Удалить ключ из ЧС | `/remove_keyword выигрыш` |
|
||
| `/keywords` | Показать все ключи | `/keywords` |
|
||
|
||
### Предупреждения:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/warnings` | Пользователи с предупреждениями | `/warnings` |
|
||
| `/clear_warnings <ID>` | Сбросить предупреждения | `/clear_warnings 123456789` |
|
||
| `/antispam_stats` | Статистика анти-спама | `/antispam_stats` |
|
||
| `/reload_antispam` | Перезагрузить конфиг | `/reload_antispam` |
|
||
|
||
---
|
||
|
||
## 🎯 Сценарии использования
|
||
|
||
### Сценарий 1: Отправка запрещённой ссылки
|
||
|
||
**Пользователь пишет:**
|
||
```
|
||
Заходите на сайт! spam.com - там крутые предложения!
|
||
```
|
||
|
||
**Бот:**
|
||
1. ✅ Находит домен `spam.com` в чёрном списке
|
||
2. ✅ **Удаляет сообщение** из чата
|
||
3. ✅ Пишет нарушителю в личку:
|
||
```
|
||
⚠️ Предупреждение #1
|
||
|
||
В вашем сообщении обнаружена запрещённая ссылка или спам.
|
||
|
||
Причина: Запрещённый домен: spam.com
|
||
|
||
📊 Ваши нарушения: 1 из 3
|
||
|
||
При следующем нарушении будет публичное предупреждение.
|
||
При достижении 3 предупреждений — бан.
|
||
```
|
||
4. ✅ Уведомляет админа:
|
||
```
|
||
⚠️ СПАМ В ЧАТЕ!
|
||
|
||
Пользователь: Иван Иванов
|
||
ID: 123456789
|
||
Квартира: 45
|
||
|
||
Причина: Запрещённый домен: spam.com
|
||
|
||
Предупреждений: 1 из 3
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 2: Повторное нарушение
|
||
|
||
**Пользователь снова пишет:**
|
||
```
|
||
Ну тогда вот: t.me/spam_channel - заходите!
|
||
```
|
||
|
||
**Бот:**
|
||
1. ✅ Находит паттерн `t.me/spam_`
|
||
2. ✅ **Удаляет сообщение**
|
||
3. ✅ Пишет в личку (предупреждение #2)
|
||
4. ✅ Уведомляет админа
|
||
|
||
---
|
||
|
||
### Сценарий 3: Третье нарушение — БАН!
|
||
|
||
**Пользователь в третий раз:**
|
||
```
|
||
cryptoscam.io - бесплатный биткоин!
|
||
```
|
||
|
||
**Бот:**
|
||
1. ✅ Находит домен `cryptoscam.io`
|
||
2. ✅ **Удаляет сообщение**
|
||
3. ✅ Пишет в личку:
|
||
```
|
||
🚫 ВЫ ЗАБАНЕНЫ
|
||
|
||
Причина: Систематический спам (3 предупреждений).
|
||
|
||
Вы больше не можете писать в чат.
|
||
```
|
||
4. ✅ **Удаляет из чата** (бан)
|
||
5. ✅ Помечает `is_banned=True` в БД
|
||
6. ✅ Уведомляет админа
|
||
|
||
---
|
||
|
||
### Сценарий 4: Добавление нового домена
|
||
|
||
**Админ видит спам:**
|
||
```
|
||
new-scam.xyz - заходите!
|
||
```
|
||
|
||
**Админ:**
|
||
```bash
|
||
/add_domain new-scam.xyz
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
✅ Домен new-scam.xyz добавлен в чёрный список
|
||
```
|
||
|
||
**Теперь этот домен блокируется автоматически!**
|
||
|
||
---
|
||
|
||
### Сценарий 5: Просмотр статистики
|
||
|
||
**Админ:**
|
||
```bash
|
||
/antispam_stats
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
📊 Статистика анти-спама
|
||
|
||
📁 Чёрный список:
|
||
├─ Домены: 15
|
||
├─ Паттерны: 8
|
||
└─ Ключевые слова: 12
|
||
|
||
⚠️ Предупреждения:
|
||
├─ Активные: 5
|
||
└─ Забанено за спам: 2
|
||
|
||
⚙️ Настройки:
|
||
├─ Удалять сообщения: ✅
|
||
├─ Предупреждать пользователя: ✅
|
||
├─ Уведомлять админа: ✅
|
||
└─ Бан после 3 предупреждений
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 6: Сброс предупреждений
|
||
|
||
**Админ видит:**
|
||
```bash
|
||
/warnings
|
||
|
||
# Ответ:
|
||
⚠️ Пользователи с предупреждениями
|
||
|
||
• Иван Иванов (кв. 45) — 2 предупр.
|
||
• Петр Петров (кв. 88) — 1 предупр.
|
||
```
|
||
|
||
**Админ хочет сбросить Петру:**
|
||
```bash
|
||
/clear_warnings 987654321
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
✅ Предупреждения пользователя 987654321 сброшены
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Настройки
|
||
|
||
Файл: `data/bad_domains.json`
|
||
|
||
```json
|
||
{
|
||
"settings": {
|
||
"delete_message": true, // Удалять спам-сообщения
|
||
"warn_user": true, // Предупреждать пользователя
|
||
"notify_admin": true, // Уведомлять админа
|
||
"ban_after_warnings": 3, // Бан после N предупреждений
|
||
"exclude_verified": false, // Исключить верифицированных
|
||
"exclude_admins": true // Исключить админов
|
||
}
|
||
}
|
||
```
|
||
|
||
**Можно изменить вручную** в файле или через команду `/reload_antispam` после редактирования.
|
||
|
||
---
|
||
|
||
## 🗄️ База данных
|
||
|
||
### Таблица `spam_warnings`:
|
||
```sql
|
||
CREATE TABLE spam_warnings (
|
||
warning_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
user_id BIGINT NOT NULL,
|
||
message_text TEXT,
|
||
reason TEXT,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
is_active BOOLEAN DEFAULT 1,
|
||
FOREIGN KEY (user_id) REFERENCES users(user_id)
|
||
)
|
||
```
|
||
|
||
### Поле в `users`:
|
||
```sql
|
||
ALTER TABLE users ADD COLUMN spam_warning_count INTEGER DEFAULT 0
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Тестирование
|
||
|
||
### Чек-лист проверки:
|
||
|
||
#### 1. Добавление домена
|
||
```bash
|
||
# Админ:
|
||
/add_domain test-spam.com
|
||
/domains
|
||
```
|
||
- [ ] Домен добавлен
|
||
- [ ] Показывается в списке
|
||
|
||
#### 2. Блокировка ссылки
|
||
```bash
|
||
# С другого аккаунта:
|
||
Заходите на test-spam.com!
|
||
```
|
||
- [ ] Сообщение удалено
|
||
- [ ] В личку пришло предупреждение #1
|
||
- [ ] Админ получил уведомление
|
||
|
||
#### 3. Повторное нарушение
|
||
```bash
|
||
# Снова:
|
||
Ещё ссылка: test-spam.com
|
||
```
|
||
- [ ] Предупреждение #2
|
||
- [ ] Счётчик увеличился
|
||
|
||
#### 4. Третье нарушение — бан
|
||
```bash
|
||
# В третий раз:
|
||
test-spam.com
|
||
```
|
||
- [ ] Предупреждение #3
|
||
- [ ] Пользователь забанен
|
||
- [ ] Удалён из чата
|
||
|
||
#### 5. Сброс предупреждений
|
||
```bash
|
||
# Админ:
|
||
/warnings
|
||
/clear_warnings <ID>
|
||
```
|
||
- [ ] Предупреждения сброшены
|
||
|
||
---
|
||
|
||
## 📁 Изменённые файлы
|
||
|
||
| Файл | Изменения |
|
||
|------|-----------|
|
||
| `data/bad_domains.json` | Новый файл с ЧС |
|
||
| `services/antispam.py` | Новый сервис проверки |
|
||
| `handlers/antispam.py` | Новые хендлеры |
|
||
| `handlers/chat_monitor.py` | Добавлена проверка на спам |
|
||
| `database/models.py` | Модели SpamWarning + поле spam_warning_count |
|
||
| `database/migrate_add_spam_warnings.py` | Миграция БД |
|
||
| `handlers/__init__.py` | Импорт antispam_router |
|
||
| `main.py` | Регистрация antispam_router |
|
||
|
||
---
|
||
|
||
## 🚀 Как использовать
|
||
|
||
### Для админа:
|
||
|
||
1. **Добавить спам-домен:**
|
||
```
|
||
/add_domain spam.com
|
||
```
|
||
|
||
2. **Посмотреть статистику:**
|
||
```
|
||
/antispam_stats
|
||
```
|
||
|
||
3. **Проверить предупреждения:**
|
||
```
|
||
/warnings
|
||
```
|
||
|
||
### Для жильца:
|
||
|
||
**Ничего делать не нужно!** Бот работает автоматически.
|
||
|
||
**Если получил предупреждение:**
|
||
- Не отправляй ссылки из чёрного списка
|
||
- Если ссылка легальная — напиши админу
|
||
|
||
---
|
||
|
||
## 💡 Советы
|
||
|
||
### Какие домены добавлять:
|
||
- ✅ Спам-сайты
|
||
- ✅ Фишинг
|
||
- ✅ Мошеннические лотереи
|
||
- ✅ Фейковые магазины
|
||
|
||
### Какие паттерны добавлять:
|
||
- ✅ `t.me/spam_` — спам-каналы
|
||
- ✅ `vk.com/fake_` — фейковые страницы
|
||
- ✅ `bit.ly/scam` — сокращённые спам-ссылки
|
||
|
||
### Какие ключевые слова добавлять:
|
||
- ✅ «выигрыш в лотерею»
|
||
- ✅ «бесплатный биткоин»
|
||
- ✅ «заработок без вложений»
|
||
|
||
---
|
||
|
||
## 🔧 Отладка
|
||
|
||
### Посмотреть предупреждения в БД:
|
||
```bash
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
sqlite3 database/domovoy.db
|
||
|
||
SELECT * FROM spam_warnings ORDER BY created_at DESC LIMIT 10;
|
||
```
|
||
|
||
### Логи:
|
||
```bash
|
||
tail -f logs/bot.log | grep -i spam
|
||
```
|
||
|
||
### Перезагрузить конфиг:
|
||
```bash
|
||
/reload_antispam
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Преимущества
|
||
|
||
| Было | Стало |
|
||
|------|-------|
|
||
| Спам в чате | **Авто-удаление** |
|
||
| Ручная модерация | **Бот работает 24/7** |
|
||
| Нет учёта нарушений | **3 предупреждения → бан** |
|
||
| Не видно кто спамит | **Статистика и логи** |
|
||
| Нет чёрного списка | **Домены + паттерны + ключи** |
|
||
|
||
---
|
||
|
||
**Защита от спама готова! 🛡️**
|
||
|
||
*Следующий шаг: тестирование на тестовой группе и фиксация версии v1.2*
|