Files
LGBot/README.md

208 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center">
<h1 align="center">LGBot</h1>
<p align="center">Бот-администратор для @linux_gaming_ru </p>
</div>
### Установка зависимостей (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`