# 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). ## Установка и настройка 1. Склонируйте репозиторий на локальную машину: ```bash git clone https://gitea.db-of.ru/db_neiro_filter/telegram ``` 2. Установите зависимости, используя Poetry: ```bash poetry install ``` ## Запуск - Запуск бота ```bash poetry run python main.py ``` ## Статистические данные - Количество строк/комментариев ```bash poetry run python count_lines.py ``` - Проверка линтером ```bash poetry run ruff check . ``` - Сырые статистические данные ```bash poetry run radon raw ./ ``` - Цикломатическая сложность ```bash poetry run radon cc ./ ``` - Метрики Холстеда ```bash poetry run radon hal ./ ``` - Индекс поддерживаемости кода ```bash poetry run radon mi ./ ``` ## Лицензия Этот проект распространяется под лицензией **GNU AGPLv3 с дополнительными условиями**. Основные положения: - Код остаётся открытым. - Обязательно указание авторства. - Все модификации должны распространяться под той же лицензией. - Коммерческое использование запрещено без разрешения автора. - Пользователи должны уведомлять автора о публичном использовании проекта. Подробные условия см. в файле `LICENSE`. Дополнительные требования см. в файле `TERMS.md`.