7.8 KiB
db_neiro_filter
Описание проекта
Этот проект представляет собой систему модулей для идентификации и фильтрации нежелательного контента, интегрированную с ботами Telegram и Discord. Основной функционал системы заключается в автоматическом удалении и классификации сообщений, которые могут содержать спам, нецензурные выражения, или материалы категории 18+. Проект направлен на обеспечение безопасного и контролируемого взаимодействия пользователей в сообществах.
Структура проекта
Проект состоит из трех основных модулей: core, telegram, и discord. Каждый модуль выполняет свои задачи и взаимодействует с остальными для обеспечения бесперебойного функционирования системы.
1. Core
Модуль core отвечает за идентификацию и классификацию нежелательного контента. Он включает в себя:
- API: Обеспечивает взаимодействие с пользователями и позволяет выполнять фильтрацию и управление данными.
- spam: Нейросеть, предназначенная для классификации сообщений как спам или допустимый контент.
- mat: Нейросеть, определяющая, содержит ли сообщение нецензурную лексику.
- 18+: Нейросеть, анализирующая сообщения на наличие контента категории 18+.
- mongodb: База данных, в которой хранятся не обнаруженные ранее нежелательные сообщения, используемые для последующего дообучения нейросетей.
Структура базы данных:
База данных состоит из коллекций, в которых хранится необнаруженный контент для последующего дообучения. Каждая коллекция включает данные о типе контента, источнике и добавившем пользователе.
2. Telegram
Модуль telegram обеспечивает интеграцию с Telegram ботом для взаимодействия с пользователями и обработки контента. Включает в себя:
- bot: Обрабатывает поступающие сообщения и команды, передавая их на обработку в модуль core.
- команды: Отправляют запросы к API модуля core для добавления не угодного контента и взаимодействия с базой данных.
- mongodb: База данных, где хранятся все удалённые сообщения, с указанием времени и причины удаления.
Структура базы данных:
База данных сохраняет информацию о пользователе, сообщения которого были удалены, включая текст, изображение, время удаления, ID пользователя и сведения о том, было ли удаление автоматическим или ручным.
3. Discord
Модуль discord интегрирован с Discord ботом и аналогично модулю telegram выполняет обработку и классификацию контента:
- bot: Обрабатывает сообщения и команды, отправляя их на анализ в модуль core.
- команды: Позволяют добавлять новый нежелательный контент и взаимодействовать с базой данных через API модуля core.
- mongodb: База данных, в которой хранятся все удалённые сообщения, время и причина удаления.
Структура базы данных:
База данных Discord хранит данные о пользователях, чьи сообщения были удалены, включая текст, изображение, ID пользователя и тип удаления (автоматическое или ручное).
Дополнительная информация
Проект разрабатывается на приватном сервере Gitea с использованием следующих практик и инструментов:
- Линтинг: Код проверяется с использованием линтеров для поддержания высокого качества.
- Тестирование: Автоматические модульные тесты написаны с использованием Pytest для обеспечения корректности функционала.
- Нагрузочное тестирование: Проводится с помощью Locust для оценки производительности системы под высокой нагрузкой.
- Автоматическое развёртывание: С помощью Gitea Actions реализован непрерывный цикл интеграции и доставки (CI/CD).
Установка и настройка
- Склонируйте репозиторий на локальную машину:
git clone https://gitea.db-of.ru/db_neiro_filter/telegram - Установите зависимости, используя Poetry:
poetry install
Запуск
- Запуск бота
poetry run python main.py
Статистические данные
- Количество строк/комментариев
poetry run python count_lines.py - Проверка линтером
poetry run ruff check . - Сырые статистические данные
poetry run radon raw ./ - Цикломатическая сложность
poetry run radon cc ./ - Метрики Холстеда
poetry run radon hal ./ - Индекс поддерживаемости кода
poetry run radon mi ./
Лицензия
Этот проект распространяется под лицензией GNU AGPLv3 с дополнительными условиями.
Основные положения:
- Код остаётся открытым.
- Обязательно указание авторства.
- Все модификации должны распространяться под той же лицензией.
- Коммерческое использование запрещено без разрешения автора.
- Пользователи должны уведомлять автора о публичном использовании проекта.
Подробные условия см. в файле LICENSE.
Дополнительные требования см. в файле TERMS.md.