forked from Muzifs/LGBot
208 lines
7.2 KiB
Markdown
208 lines
7.2 KiB
Markdown
<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` |