LGBot

Бот-администратор для @linux_gaming_ru

### Установка зависимостей (pyenv) ```sh pyenv install 3.11.0 ~/.pyenv/versions/3.11.0/bin/python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ### Настройка Создайте файл **.env** и внесите в него токен бота, ID админ-чата и топика. ### Запуск ```sh python src/main.py ``` > Используется Python 3.11.0 ### Обновление на сервере Для обновления бота на продакшн-сервере используйте скрипт `update.sh`: ```sh ./update.sh ``` Скрипт автоматически: - Проверит наличие обновлений в git-репозитории - Загрузит изменения (`git pull`) - Перезапустит службу бота (`systemctl restart LGBot.service`) - Покажет статус работы бота --- ## Система автоматического мьюта Бот автоматически отслеживает использование нецензурной лексики и применяет прогрессирующие наказания. ### Как работает 1. **Обнаружение нарушений:** - Каждое текстовое сообщение проверяется на наличие бранных слов - Проверяются только группы и супергруппы (не личные сообщения) - Команды (начинающиеся с `/`) не проверяются 2. **При обнаружении мата:** - Сообщение удаляется автоматически - Нарушение фиксируется в базе данных - Пользователь получает мут соответствующего уровня - Уведомление отправляется в чат и админ-чат 3. **Прогрессирующие наказания:** | № нарушения | Длительность мута | № нарушения | Длительность мута | |-------------|-------------------|-------------|-------------------| | 1 | 5 минут | 9 | 1 день | | 2 | 15 минут | 10 | 2 дня | | 3 | 30 минут | 11 | 3 дня | | 4 | 1 час | 12 | 5 дней | | 5 | 2 часа | 13 | 7 дней | | 8 | 12 часов | 16+ | **НАВСЕГДА** | 4. **Накопительный эффект:** - Нарушения учитываются за последние **30 дней** - Старые нарушения автоматически удаляются из базы - Администраторы **освобождены** от автоматических мутов ### Управление списком бранных слов ⚠️ **Все команды доступны только администраторам чата** #### Основные команды ```bash # Показать справку /badwords help # Показать список бранных слов (первые 50) /badwords list # Статистика /badwords count # Добавить слово в список /badwords add <слово> # Удалить слово из списка /badwords remove <слово> ``` #### Исключения Исключения — слова, содержащие бранные корни, но не являющиеся матом (например: "республика", "документ"): ```bash # Показать исключения /badwords exceptions # Добавить исключение /badwords add_exception <слово> # Удалить исключение /badwords remove_exception <слово> ``` #### Служебные команды ```bash # Перезагрузить списки из файла /badwords reload ``` ### Рекомендации 1. **Используйте корни слов**, а не полные формы: - ✅ Правильно: `ебал` (поймает все формы) - ❌ Неправильно: `ебала` (пропустит другие формы) 2. **Избегайте коротких корней** (могут давать ложные срабатывания) 3. **Тестируйте после добавления** нового слова ### Хранение данных Все списки хранятся в файле `src/data/bad_words.json`: ```json { "bad_words": ["слово1", "слово2", ...], "exceptions": ["исключение1", "исключение2", ...] } ``` Изменения через команды применяются **немедленно**, перезапуск бота не требуется. ### Логирование Все действия записываются в: - **bot.log** - файл логов - **Админ-чат** - уведомления о мутах Примеры логов: ``` [INFO] Пользователь 123456789 получил автоматический мут на 5 минут за нецензурную лексику (нарушение #1) [INFO] Нарушение пользователя 123456789 зафиксировано в чате -100123456789 [INFO] Администратор 987654321 добавил бранное слово: спам ``` ### База данных Таблица `violations` хранит все нарушения: - `id` - уникальный идентификатор - `user_id` - ID пользователя - `chat_id` - ID чата - `violation_date` - время нарушения (unix timestamp) - `violation_type` - тип нарушения ('bad_language') ### Настройка системы #### Изменение уровней мутов Откройте `src/modules/auto_mute.py` и измените массив `MUTE_LEVELS`: ```python MUTE_LEVELS = [ 300, # 1. 5 минут 900, # 2. 15 минут # ... добавьте или измените уровни None, # Перманентный мут ] ``` #### Изменение периода накопления Измените `VIOLATIONS_PERIOD` в `src/modules/auto_mute.py`: ```python VIOLATIONS_PERIOD = 2592000 # 30 дней в секундах ``` ### Требования - Python 3.7+ - pyTelegramBotAPI (telebot) - SQLite3 - Права бота в чате: - Удаление сообщений - Ограничение пользователей ### Устранение проблем При возникновении проблем проверьте: 1. Логи бота в файле `bot.log` 2. Права бота в чате (удаление сообщений, ограничение пользователей) 3. Корректность настроек в `.env` 4. Наличие файла `src/data/bad_words.json`