Files
telegram/README.md
T

7.8 KiB
Raw Blame History

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. Склонируйте репозиторий на локальную машину:
    git clone https://gitea.db-of.ru/db_neiro_filter/telegram
    
  2. Установите зависимости, используя 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.