Files
new_lottery_bot/docs/CHAT_QUICKSTART.md
Andrew K. Choi e798216cef
Some checks reported errors
continuous-integration/drone/push Build encountered an error
fix: исправлены импорты и добавлен планировщик рассылки
- Исправлены импорты: 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: исправлены импорты и использование сессий
2025-11-16 14:35:33 +09:00

4.4 KiB
Raw Permalink Blame History

Быстрый старт: Система чата

Что реализовано

Два режима работы:

  • 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

Следующие шаги

  1. Тестирование:

    • Проверить broadcast режим с разными типами сообщений
    • Проверить forward режим с каналом
    • Протестировать баны и разбаны
    • Проверить удаление сообщений
  2. Опциональные улучшения:

    • Фильтрация контента (мат, спам)
    • Лимиты сообщений (антиспам)
    • Ответы на сообщения
    • Реакции на сообщения
    • История чата через команду

Коммит

git log --oneline -1
# b6c27b7 feat: добавлена система чата с модерацией

# Ветка: feature/chat-system
# Изменений: 7 файлов, 1592 строки добавлено

Полная документация

Смотрите: docs/CHAT_SYSTEM.md