LGBot
Бот-администратор для @linux_gaming_ru
Установка зависимостей (pyenv)
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 админ-чата и топика.
Запуск
python src/main.py
Используется Python 3.11.0
Обновление на сервере
Для обновления бота на продакшн-сервере используйте скрипт update.sh
:
./update.sh
Скрипт автоматически:
- Проверит наличие обновлений в git-репозитории
- Загрузит изменения (
git pull
) - Перезапустит службу бота (
systemctl restart LGBot.service
) - Покажет статус работы бота
Система автоматического мьюта
Бот автоматически отслеживает использование нецензурной лексики и применяет прогрессирующие наказания.
Как работает
-
Обнаружение нарушений:
- Каждое текстовое сообщение проверяется на наличие бранных слов
- Проверяются только группы и супергруппы (не личные сообщения)
- Команды (начинающиеся с
/
) не проверяются
-
При обнаружении мата:
- Сообщение удаляется автоматически
- Нарушение фиксируется в базе данных
- Пользователь получает мут соответствующего уровня
- Уведомление отправляется в чат и админ-чат
-
Прогрессирующие наказания:
№ нарушения | Длительность мута | № нарушения | Длительность мута |
---|---|---|---|
1 | 5 минут | 9 | 1 день |
2 | 15 минут | 10 | 2 дня |
3 | 30 минут | 11 | 3 дня |
4 | 1 час | 12 | 5 дней |
5 | 2 часа | 13 | 7 дней |
8 | 12 часов | 16+ | НАВСЕГДА |
- Накопительный эффект:
- Нарушения учитываются за последние 30 дней
- Старые нарушения автоматически удаляются из базы
- Администраторы освобождены от автоматических мутов
Управление списком бранных слов
⚠️ Все команды доступны только администраторам чата
Основные команды
# Показать справку
/badwords help
# Показать список бранных слов (первые 50)
/badwords list
# Статистика
/badwords count
# Добавить слово в список
/badwords add <слово>
# Удалить слово из списка
/badwords remove <слово>
Исключения
Исключения — слова, содержащие бранные корни, но не являющиеся матом (например: "республика", "документ"):
# Показать исключения
/badwords exceptions
# Добавить исключение
/badwords add_exception <слово>
# Удалить исключение
/badwords remove_exception <слово>
Служебные команды
# Перезагрузить списки из файла
/badwords reload
Рекомендации
-
Используйте корни слов, а не полные формы:
- ✅ Правильно:
ебал
(поймает все формы) - ❌ Неправильно:
ебала
(пропустит другие формы)
- ✅ Правильно:
-
Избегайте коротких корней (могут давать ложные срабатывания)
-
Тестируйте после добавления нового слова
Хранение данных
Все списки хранятся в файле src/data/bad_words.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
:
MUTE_LEVELS = [
300, # 1. 5 минут
900, # 2. 15 минут
# ... добавьте или измените уровни
None, # Перманентный мут
]
Изменение периода накопления
Измените VIOLATIONS_PERIOD
в src/modules/auto_mute.py
:
VIOLATIONS_PERIOD = 2592000 # 30 дней в секундах
Требования
- Python 3.7+
- pyTelegramBotAPI (telebot)
- SQLite3
- Права бота в чате:
- Удаление сообщений
- Ограничение пользователей
Устранение проблем
При возникновении проблем проверьте:
- Логи бота в файле
bot.log
- Права бота в чате (удаление сообщений, ограничение пользователей)
- Корректность настроек в
.env
- Наличие файла
src/data/bad_words.json