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: исправлены импорты и использование сессий
4.4 KiB
4.4 KiB
Быстрый старт: Система чата
Что реализовано
✅ Два режима работы:
- Broadcast: сообщения рассылаются всем пользователям
- Forward: сообщения пересылаются в канал/группу
✅ 7 типов сообщений: text, photo, video, document, animation, sticker, voice
✅ Система банов:
- Личные баны пользователей с причиной
- Глобальный бан (закрытие чата для всех кроме админов)
✅ Модерация: удаление сообщений с отслеживанием
Быстрая настройка
1. Режим рассылки (broadcast)
# Админ отправляет команду:
/chat_mode
# → Нажимает "📢 Рассылка всем"
# Готово! Теперь сообщения пользователей рассылаются друг другу
2. Режим пересылки (forward)
# Шаг 1: Создайте канал и добавьте бота как админа
# Шаг 2: Узнайте chat_id канала:
# - Напишите в канале сообщение
# - Перешлите его @userinfobot
# - Скопируйте chat_id (например: -1001234567890)
# Шаг 3: Установите канал
/set_forward -1001234567890
# Шаг 4: Переключите режим
/chat_mode
# → Нажимает "➡️ Пересылка в канал"
# Готово! Сообщения пользователей пересылаются в канал
Команды модерации
# Забанить пользователя (ответ на сообщение)
/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 |
Следующие шаги
-
Тестирование:
- Проверить broadcast режим с разными типами сообщений
- Проверить forward режим с каналом
- Протестировать баны и разбаны
- Проверить удаление сообщений
-
Опциональные улучшения:
- Фильтрация контента (мат, спам)
- Лимиты сообщений (антиспам)
- Ответы на сообщения
- Реакции на сообщения
- История чата через команду
Коммит
git log --oneline -1
# b6c27b7 feat: добавлена система чата с модерацией
# Ветка: feature/chat-system
# Изменений: 7 файлов, 1592 строки добавлено
Полная документация
Смотрите: docs/CHAT_SYSTEM.md