Some checks reported errors
continuous-integration/drone/push Build encountered an error
- Исправлены импорты: database → src.core.database, config → src.core.config - Заменены async for get_session() на async with async_session_maker() - Добавлен планировщик для пакетной рассылки сообщений (BATCH_SIZE=20, BATCH_DELAY=1.0s) - Исправлено использование is_registered вместо is_active для фильтрации пользователей - Реализована защита от блокировки Telegram при массовой рассылке Изменения: - src/handlers/chat_handlers.py: добавлен broadcast_message_with_scheduler - src/handlers/admin_chat_handlers.py: исправлены импорты и использование сессий
138 lines
4.4 KiB
Markdown
138 lines
4.4 KiB
Markdown
# Быстрый старт: Система чата
|
||
|
||
## Что реализовано
|
||
|
||
✅ **Два режима работы:**
|
||
- Broadcast: сообщения рассылаются всем пользователям
|
||
- Forward: сообщения пересылаются в канал/группу
|
||
|
||
✅ **7 типов сообщений:** text, photo, video, document, animation, sticker, voice
|
||
|
||
✅ **Система банов:**
|
||
- Личные баны пользователей с причиной
|
||
- Глобальный бан (закрытие чата для всех кроме админов)
|
||
|
||
✅ **Модерация:** удаление сообщений с отслеживанием
|
||
|
||
## Быстрая настройка
|
||
|
||
### 1. Режим рассылки (broadcast)
|
||
|
||
```bash
|
||
# Админ отправляет команду:
|
||
/chat_mode
|
||
# → Нажимает "📢 Рассылка всем"
|
||
|
||
# Готово! Теперь сообщения пользователей рассылаются друг другу
|
||
```
|
||
|
||
### 2. Режим пересылки (forward)
|
||
|
||
```bash
|
||
# Шаг 1: Создайте канал и добавьте бота как админа
|
||
|
||
# Шаг 2: Узнайте chat_id канала:
|
||
# - Напишите в канале сообщение
|
||
# - Перешлите его @userinfobot
|
||
# - Скопируйте chat_id (например: -1001234567890)
|
||
|
||
# Шаг 3: Установите канал
|
||
/set_forward -1001234567890
|
||
|
||
# Шаг 4: Переключите режим
|
||
/chat_mode
|
||
# → Нажимает "➡️ Пересылка в канал"
|
||
|
||
# Готово! Сообщения пользователей пересылаются в канал
|
||
```
|
||
|
||
## Команды модерации
|
||
|
||
```bash
|
||
# Забанить пользователя (ответ на сообщение)
|
||
/ban Причина бана
|
||
|
||
# Забанить по ID
|
||
/ban 123456789 Спам
|
||
|
||
# Разбанить
|
||
/unban # (ответ на сообщение)
|
||
/unban 123456789
|
||
|
||
# Список банов
|
||
/banlist
|
||
|
||
# Закрыть/открыть чат для всех
|
||
/global_ban
|
||
|
||
# Удалить сообщение из всех чатов
|
||
/delete_msg # (ответ на сообщение)
|
||
|
||
# Статистика чата
|
||
/chat_stats
|
||
```
|
||
|
||
## Структура БД
|
||
|
||
```
|
||
chat_settings (1 строка)
|
||
├── mode: 'broadcast' | 'forward'
|
||
├── forward_chat_id: ID канала (если forward)
|
||
└── global_ban: true/false
|
||
|
||
banned_users
|
||
├── telegram_id: ID забаненного
|
||
├── banned_by: кто забанил
|
||
├── reason: причина
|
||
└── is_active: активен ли бан
|
||
|
||
chat_messages
|
||
├── user_id: отправитель
|
||
├── message_type: тип сообщения
|
||
├── text: текст или caption
|
||
├── file_id: ID файла
|
||
├── forwarded_message_ids: {user_id: msg_id} (JSONB)
|
||
├── is_deleted: удалено ли
|
||
└── deleted_by: кто удалил
|
||
```
|
||
|
||
## Файлы
|
||
|
||
| Файл | Описание | Строк |
|
||
|------|----------|-------|
|
||
| `migrations/versions/005_add_chat_system.py` | Миграция БД | 108 |
|
||
| `src/core/models.py` | Модели ORM (+67) | - |
|
||
| `src/core/chat_services.py` | Сервисы | 267 |
|
||
| `src/handlers/chat_handlers.py` | Обработчики сообщений | 447 |
|
||
| `src/handlers/admin_chat_handlers.py` | Админ команды | 369 |
|
||
| `docs/CHAT_SYSTEM.md` | Полная документация | 390 |
|
||
|
||
## Следующие шаги
|
||
|
||
1. **Тестирование:**
|
||
- Проверить broadcast режим с разными типами сообщений
|
||
- Проверить forward режим с каналом
|
||
- Протестировать баны и разбаны
|
||
- Проверить удаление сообщений
|
||
|
||
2. **Опциональные улучшения:**
|
||
- Фильтрация контента (мат, спам)
|
||
- Лимиты сообщений (антиспам)
|
||
- Ответы на сообщения
|
||
- Реакции на сообщения
|
||
- История чата через команду
|
||
|
||
## Коммит
|
||
|
||
```bash
|
||
git log --oneline -1
|
||
# b6c27b7 feat: добавлена система чата с модерацией
|
||
|
||
# Ветка: feature/chat-system
|
||
# Изменений: 7 файлов, 1592 строки добавлено
|
||
```
|
||
|
||
## Полная документация
|
||
|
||
Смотрите: [docs/CHAT_SYSTEM.md](./CHAT_SYSTEM.md)
|