Merged with KarkasLite

This commit is contained in:
Давид Султаниязов 2024-08-24 20:41:42 +03:00
commit 50aae16d62
12 changed files with 164 additions and 185 deletions

View File

@ -1,5 +1,5 @@
Руководитель проекта: Руководитель проекта:
- Семен Фомченков (@Armatik), e-mail: armatik@alt-gnome.ru - Семён Фомченков (@Armatik), e-mail: armatik@alt-gnome.ru
Ведущие разработчики: Ведущие разработчики:
- Максим Слипенко (@Maks1m_S), e-mail: maxim@slipenko.com - Максим Слипенко (@Maks1m_S), e-mail: maxim@slipenko.com

View File

@ -1,23 +1,20 @@
# Karkas # Каркас
## Что такое Karkas? ## Что такое «Каркас»?
Karkas - это платформа для разработки модульных Telegram-ботов, которая призвана упростить взаимодействие с чатами. Каркас — это платформа для разработки модульных Telegram-ботов, которая призвана упростить взаимодействие с чатами. «Каркас» предоставляет возможность расширять функциональность бота с помощью интеграции различных модулей. Код платформы и набор стандартных модулей находятся в этом монорепозитории.
Karkas предоставляет возможность расширять функциональность бота с помощью интеграции различных модулей.
Код платформы и набор стандартных модулей находятся в этом монорепозитории.
## Структура монорепозитория ## Структура монорепозитория
Монорепозиторий Karkas включает в себя: Монорепозиторий Karkas включает в себя:
* **Ядро Karkas (src/karkas_core):** Содержит основные компоненты платформы, такие как система управления модулями,
логирование и утилиты. - **Ядро Karkas (`src/karkas_core`):** Основные компоненты платформы, такие как система управления модулями, логирование и утилиты.
* **Модули Karkas (src/karkas_blocks):** Содержит стандартные и дополнительные модули, которые расширяют - **Блоки Karkas (`src/karkas_blocks`):** Содержит стандартные и дополнительные модули, которые расширяют функциональность ботов, созданных на платформе «Каркас».
функциональность ботов Karkas. - **Бот Gnomик (`src/gnomik`):** Пример реализации бота, созданного на основе платформы «Каркас».
* **Пример бота (src/gnomik):** Пример реализации бота на платформе Karkas.
## Модули ## Модули
Модули Karkas - это независимые компоненты, которые добавляют функциональность к боту. Модули Karkas это независимые компоненты, которые добавляют функциональность бота.
### Структура модуля ### Структура модуля
@ -25,20 +22,24 @@ Karkas предоставляет возможность расширять фу
### Стандартные модули ### Стандартные модули
Стандартные модули предоставляют базовые функции для работы бота: Стандартные модули предоставляют базовые функции для работы бота
* [admin](src/karkas_blocks/karkas_blocks/standard/admin/README.md) - модуль для модерирования чата.
* [roles](src/karkas_blocks/karkas_blocks/standard/roles/README.md) - модуль ролей пользователей. Полный перечень стандартных модулей:
* [config](src/karkas_blocks/karkas_blocks/standard/config/README.md) - модуль управления конфигурацией бота.
* [database](src/karkas_blocks/karkas_blocks/standard/database/README.md) - модуль для работы с базой данных. - [`admin`](src/karkas_blocks/karkas_blocks/standard/admin/README.md) — модуль модерирования чата;
* [fsm_database_storage](src/karkas_blocks/karkas_blocks/standard/fsm_database_storage/README.md) - модуль для хранения состояний FSM в базе данных. - [`roles`](src/karkas_blocks/karkas_blocks/standard/roles/README.md) — модуль управления ролями пользователей;
* [filters](src/karkas_blocks/karkas_blocks/standard/filters/README.md) - модуль, предоставляющий фильтры для aiogram. - [`config`](src/karkas_blocks/karkas_blocks/standard/config/README.md) — модуль управления конфигурацией бота;
* [message_processing](src/karkas_blocks/karkas_blocks/standard/message_processing/README.md) - модуль обработки входящих сообщений. - [`database`](src/karkas_blocks/karkas_blocks/standard/database/README.md) — модуль для работы с базой данных;
* [miniapp](src/karkas_blocks/karkas_blocks/standard/miniapp/README.md) - модуль для реализации веб-интерфейса бота. - [`fsm_database_storage`](src/karkas_blocks/karkas_blocks/standard/fsm_database_storage/README.md) — модуль для хранения состояний FSM в базе данных;
* [command_helper](src/karkas_blocks/karkas_blocks/standard/command_helper/README.md) - модуль для упрощения регистрации команд бота. - [`filters`](src/karkas_blocks/karkas_blocks/standard/filters/README.md) — модуль, предоставляющий фильтры для `aiogram`;
* [info](src/karkas_blocks/karkas_blocks/standard/info/README.md) - модуль предоставления информации о пользователях и чатах. - [`message_processing`](src/karkas_blocks/karkas_blocks/standard/message_processing/README.md) — модуль обработки входящих сообщений;
- [`miniapp`](src/karkas_blocks/karkas_blocks/standard/miniapp/README.md) — модуль для реализации веб-интерфейса бота;
- [`command_helper`](src/karkas_blocks/karkas_blocks/standard/command_helper/README.md) — модуль для упрощения регистрации команд бота;
- [`info`](src/karkas_blocks/karkas_blocks/standard/info/README.md) — модуль предоставления информации о пользователях и чатах.
### Дополнительные официальные модули ### Дополнительные официальные модули
Дополнительные официальные модули разработаны командой Karkas и предоставляют расширенные возможности для бота: Дополнительные официальные модули созданы командой разработки платформы «Каркас» и предоставляют расширенные возможности для бота:
* [yandexgpt](src/karkas_blocks/karkas_blocks/external/yandexgpt/README.md) - модуль для интеграции с нейросетью YandexGPT.
* [create_report_apps](src/karkas_blocks/karkas_blocks/external/create_report_apps/README.md) - модуль для создания отчетов об ошибках. - [`yandexgpt`](src/karkas_blocks/karkas_blocks/external/yandexgpt/README.md) — модуль для интеграции с нейросетью YandexGPT;
- [`create_report_apps`](src/karkas_blocks/karkas_blocks/external/create_report_apps/README.md) — модуль для создания отчётов об ошибках.

View File

@ -1,39 +1,34 @@
## Настройка рабочего окружения # Настройка рабочего окружения
Данная инструкция поможет вам настроить рабочее окружение для разработки Karkas. Данная инструкция поможет вам настроить рабочее окружение для разработки Karkas.
### Предварительные требования ## Предварительные требования
* **Python 3.12:** Karkas требует Python 3.12. - **Python** — платформа «Каркас» требует интерпретатор языка Python версии 3.12;
* **VSCode:** Рекомендуется использовать VSCode для разработки. - **VSCode** — рекомендованная среда разработки;
* **Git:** У вас должен быть установлен Git для клонирования репозитория. - **Git** — инструмент контроля версий, необходим клонирования репозиториянео.
### Шаги ## Шаги
1. **Клонируйте репозиторий:** 1. Клонируйте репозиторий с помощью утилиты `git`:
```bash
```shell
git clone https://gitflic.ru/project/alt-gnome/karkas.git git clone https://gitflic.ru/project/alt-gnome/karkas.git
``` ```
2. **Откройте проект в VSCode:** 2. Откройте папку `karkas` в VSCode. Среда разработки автоматически предложит открыть проект как Workspace, используя файл `karkas.code-workspace`. Нажмите `Открыть Workspace`, чтобы принять предложение;
* Откройте папку `karkas` в VSCode.
* VSCode автоматически предложит открыть проект как workspace, используя файл `karkas.code-workspace`.
Нажмите "Открыть Workspace", чтобы принять предложение.
3. **Настройте Poetry:** 3. Установите инструмент Poetry, следуя инструкциям из [официальной документации](https://python-poetry.org/docs/). Для каждого пакета выполните следующую последовательность действий:
* Установите Poetry, следуя инструкциям на официальном сайте: [https://python-poetry.org/docs/](https://python-poetry.org/docs/).
* **Для каждого пакета:**
* Перейдите в папку пакета (например, `src/karkas_core`).
* Выполните команду `poetry install`, чтобы установить зависимости пакета.
* Poetry создаст виртуальное окружение внутри папки пакета (`.venv`).
4. **Активируйте виртуальное окружение:** - Перейдите в папку пакета (например, `src/karkas_core`);
* Выполните команду `poetry shell` в папке пакета, чтобы активировать виртуальное окружение. - Выполните команду `poetry install`, чтобы установить зависимости пакета. После этого будет создано виртуальное окружене (`.venv`);
Теперь ваше рабочее окружение настроено, и вы можете начать. 4. Выполните команду `poetry shell` в папке пакета, над которым будут производится работы, чтобы активировать виртуальное окружение.
### Дополнительная информация Теперь рабочее окружение настроено!
* Каждый пакет в монорепозитории имеет свой собственный файл `pyproject.toml`, где указаны его зависимости. ## Дополнительная информация
* Poetry автоматически управляет виртуальными окружениями для каждого пакета.
* Вы можете использовать команду `poetry add <package_name>` для добавления новых зависимостей. - Каждый пакет в монорепозитории имеет свой собственный файл `pyproject.toml`, где указаны его зависимости;
- Poetry автоматически управляет виртуальными окружениями для каждого пакета;
- Вы можете использовать команду `poetry add <package_name>` (где `<package_name>` — имя пакета) для добавления новых зависимостей.

View File

@ -2,14 +2,15 @@
> **Внимание!** > **Внимание!**
> >
> Данная спецификация еще не закончена и активно разрабатывается. > Данная спецификация ещё не закончена и активно разрабатывается.
> Могут быть значительные изменения (breaking changes). >
> Могут возникнуть изменения, которые не будут обратно совместимы (breaking changes).
Каждый модуль представлен в виде папки, содержащей два обязательных файла: info.json и `__init__.py`. Каждый модуль представлен в виде папки, содержащей два обязательных файла: `info.json` и `__init__.py`.
## Метаинформация о модуле (info.json) ## Метаданные модуля (`info.json`)
Этот файл содержит метаинформацию о модуле в формате JSON. Пример структуры info.json приведен ниже: Файл `info.json` содержит информацию о модуле в формате JSON. Пример структуры `info.json` приведён ниже:
```json ```json
{ {
@ -24,9 +25,7 @@
"standard.roles": "^1.0.0", "standard.roles": "^1.0.0",
"standard.database": { "standard.database": {
"version": "^1.0.0", "version": "^1.0.0",
"uses": [ "uses": ["db_api"]
"db_api"
]
} }
}, },
"optional": { "optional": {
@ -44,64 +43,63 @@
} }
``` ```
- `id`: Уникальный идентификатор модуля. | Поле | Описание |
- `name`: Название модуля. | :-----------------------------------------------------------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
- `description`: Описание функциональности модуля. | `id` | Уникальный идентификатор модуля |
- `author`: Автор модуля. | `name` | Название модуля |
- `version`: Версия модуля в формате [SemVer](https://semver.org/). | `description` | Описание функциональности модуля |
- `privileged`: Булево значение, указывающее, является ли модуль привилегированным. | `author` | Автор модуля |
- `dependencies`: Объект, описывающий зависимости модуля от других **Karkas** модулей. | `version` | Версия модуля в формате [SemVer](https://semver.org/) |
- `required`: Обязательные зависимости. Ключ - идентификатор модуля, значение - версия или объект `DependencyInfo`. | `privileged` | Является ли модуль привилегированным (булево значение) |
- `optional`: Необязательные зависимости. Ключ - идентификатор модуля, значение - версия или объект `DependencyInfo`. | `dependencies` | Объект, описывающий зависимости модуля от других модулей |
- `pythonDependencies`: Объект, описывающий зависимости модуля от внешних Python пакетов. | `dependencies.required` и `dependencies.optional` | Объекты, описывающий обязательные и необязательные зависимости соответственно. Ключ — идентификатор модуля, значение — версия или объект `DependencyInfo`. |
- `required`: Обязательные зависимости. Ключ - название пакета, значение - версия. | `pythonDependencies` | Объект, описывающий зависимости модуля от внешних Python пакетов. |
- `optional`: Необязательные зависимости. Ключ - название пакета, значение - версия. | `pythonDependencies.required` и `pythonDependencies.optional` | Объекты, описывающий обязательные и необязательные зависимости соответственно. Ключ — название пакета, значение — версия. |
### DependencyInfo ### DependencyInfo
Объект `DependencyInfo` позволяет указать не только версию зависимости, но и список разрешенных к использованию Объект `DependencyInfo` позволяет указать не только версию зависимости, но и список доступных к использованию атрибутов модуля (`uses`). Если `uses` не указан, то доступ к модулю целиком запрещён. Пример объекта `DependencyInfo`:
атрибутов модуля (`uses`). Если `uses` не указан, то доступ к модулю целиком запрещен.
```json ```json
{ {
"version": "^1.0.0", "version": "^1.0.0",
"uses": [ "uses": ["db_api"]
"db_api"
]
} }
``` ```
- `version`: Версия модуля. | Поле | Описание |
- `uses`: Список разрешенных атрибутов модуля. | :-------: | ------------------------------------ |
| `version` | Версия модуля |
| `uses` | Список используемых атрибутов модуля |
## Режимы выполнения модулей ## Режимы работы модулей
**Непривилегированный режим** (`privileged: false`): ### Непривилегированный режим (`privileged: false`)
- Модуль выполняется в доверенной среде на основе RestrictedPython (это накладывает ряд ограничений).
- Может импортировать только явно разрешенные модули, указанные в `pythonDependencies`, - Модуль выполняется в доверенной среде на основе `RestrictedPython`, что накладывает ряд ограничений;
а также несколько стандартных модулей, необходимых для работы. - Может импортировать только явно разрешенные модули, указанные в `pythonDependencies`, а также несколько стандартных модулей, необходимых для работы;
- Имеет доступ к пакету `karkas_core.modules_system.public_api` для взаимодействия с ботом. - Имеет доступ к пакету `karkas_core.modules_system.public_api` для взаимодействия с ботом.
**Привилегированный режим** (`privileged: true`): ### Привилегированный режим (`privileged: true`)
- Модуль выполняется без ограничений.
- Имеет полный доступ ко всем пакетам, доступным в окружении. - Модуль выполняется без ограничений;
- Имеет полный доступ ко всем пакетам, доступным в окружении;
- Должен использоваться с осторожностью и только для модулей, требующих расширенных прав. - Должен использоваться с осторожностью и только для модулей, требующих расширенных прав.
## Жизненный цикл модуля ## Жизненный цикл модуля
1. Загрузка метаданных из `info.json`. 1. Загрузка метаданных из `info.json`;
2. Проверка зависимостей: 2. Проверка зависимостей:
- Проверяется наличие всех обязательных зависимостей. - Проверка всех обязательных зависимостей;
- Проверяется совместимость версий зависимостей. - Проверка совместимости версий зависимостей;
- Проверяется наличие Python зависимостей. - Проверка зависимостей Python;
3. Загрузка кода модуля из `__init__.py`. 3. Загрузка кода модуля из `__init__.py`;
4. Вызов функции `module_init` (если она есть). 4. Вызов функции `module_init`, если она есть;
5. После загрузки всех модулей вызывается функция `module_late_init` (если она есть). 5. После загрузки всех модулей вызывается функция `module_late_init`, если она есть.
## Взаимодействие между модулями ## Межмодульное взаимодейтвие
Модули могут взаимодействовать друг с другом через [API](../src/karkas_core/karkas_core/modules_system/public_api/__init__.py), Для взаимодействия друг с другом описан [API](../src/karkas_core/karkas_core/modules_system/public_api/__init__.py),
предоставляемое системой управления модулями. предоставляемое системой управления модулями.
Например, есть функция `get_module`. Она позволяет получить модуль или предоставляемые им объекты по его Например, можно использовать функцию `get_module` для получения модуля или предоставляемых им объекты по идентификатору.
идентификатору.

View File

@ -2,25 +2,29 @@
## Описание ## Описание
Подготовленная версия Karkas для интеграции в чат [Альт Линукс](https://t.me/alt_linux) Бот, созданный на основе платформы «Каркас» и подготовленный для интеграции в чат [Альт Линукс](https://t.me/alt_linux)
## Функционал ## Функционал
Список OCAB-модулей используемых в боте:
* report - Вызов администрации чата одной командой Список модулей, используемых в боте:
* welcome - Автоматическая вариативная проверка пользователей на признаки бота или другой автоматической рекламной системы
* help - Получение справки о боте - `report` — вызов администрации чата одной командой;
- `welcome` — автоматическая вариативная проверка пользователей на признаки бота или другой рекламной системы;
- `help` — получение справки о боте.
## Запуск ## Запуск
### Docker ### Через Docker образ
1. Соберите Docker-образ: 1. Соберите Docker образ:
```bash
```shell
docker build -t altlinux -f Dockerfile ../.. docker build -t altlinux -f Dockerfile ../..
``` ```
2. Запустите контейнер: 2. Запустите контейнер:
```bash
```shell
docker run -v ./config.yaml:/app/config.yaml altlinux docker run -v ./config.yaml:/app/config.yaml altlinux
``` ```
@ -29,11 +33,14 @@
### Вручную ### Вручную
1. Активируйте виртуальное окружение: 1. Активируйте виртуальное окружение:
```bash
```shell
poetry shell poetry shell
``` ```
2. Запустите бота: 2. Запустите бота:
```bash
```shell
python -m altlinux python -m altlinux
``` ```
@ -41,8 +48,8 @@
Конфигурация хранится в файле `config.yaml`. Конфигурация хранится в файле `config.yaml`.
Пример конфигурации бота находится в файле `config-example.yaml`. Пример конфигурации бота находится в файле [`config-example.yaml`](./config-example.yaml).
## Модули ## Модули
Список загружаемых модулей указан в файле `__main__.py`. Список загружаемых модулей указан в файле [`__main__.py`](./altlinux/__main__.py).

View File

@ -1,12 +1,8 @@
# Karkas Blocks # Блоки Karkas
Karkas Blocks содержит набор модулей для платформы Open Chat AI Bot (Karkas). Блоки Karkas — это набор «блоков» (модулей) для платформы «Каркас», которые добавляют функциональность ботам.
## Описание ## Типы блоков
Karkas - это платформа для создания чат-ботов Telegram. Модули - это расширения, которые добавляют функциональность ботам Karkas. - **Стандартные (`standard`)** — блоки, содержащие основной функционал: управление пользователями, ролями и настройками;
- **Дополнительные (`external`)** — блоки, созданные командой разработки платформы «Каркас». Предоставляют расширенные возможности: интеграция с нейросетями, внешними сервисами и API.
## Типы модулей
* **Стандартные модули (standard.*):** Предоставляют основные функции, такие как управление пользователями, ролями и настройками.
* **Дополнительные официальные модули (external.*):** Разработаны командой Karkas и предоставляют расширенные возможности, такие как интеграция с нейросетями, внешними сервисами и API.

View File

@ -1,17 +1,16 @@
# Модуль Command Helper # Модуль Command Helper
Модуль `command_helper` упрощает регистрацию команд бота и управление ими. Данный для упрощения регистрации команд бота и управления ими.
## Функциональность ## Функциональность
- Регистрация команд бота. - Регистрация команд бота;
- Установка команд для пользователей в зависимости от их роли. - Установка команд для пользователей в зависимости от их роли.
## Использование ## Использование
1. Импортируйте функцию `register_command`. 1. Импортируйте функцию `register_command`;
2. Вызовите функцию `register_command`, передав ей название команды, ее описание и роль пользователя, 2. Вызовите функцию `register_command`, передав ей название команды, её описание и роль пользователей, которым доступна она будет доступна.
которому доступна эта команда.
## Пример ## Пример

View File

@ -1,18 +1,18 @@
# Модуль Config # Модуль Config
Модуль `config` управляет конфигурацией бота. Данный модуль позволяет управляет конфигурацией бота.
## Функциональность ## Функциональность
- Загрузка конфигурации из файла `config.yaml`. - Загрузка конфигурации из файла `config.yaml`;
- Сохранение конфигурации в файл. - Сохранение конфигурации в файл;
- Регистрация параметров конфигурации. - Регистрация параметров конфигурации;
- Получение значений параметров. - Получение значений параметров.
## Использование ## Использование
1. Импортируйте объект `config`. 1. Импортируйте объект `config`;
2. Вызовите метод `register`, чтобы зарегистрировать параметр конфигурации. 2. Вызовите метод `register`, чтобы зарегистрировать параметр конфигурации;
3. Вызовите метод `get`, чтобы получить значение параметра. 3. Вызовите метод `get`, чтобы получить значение параметра.
## Пример ## Пример

View File

@ -1,12 +1,12 @@
# Модуль Filters # Модуль Filters
Модуль `filters` предоставляет фильтры для aiogram, которые используются для ограничения доступа к командам Данный модуль предоставляет фильтры для `aiogram`, которые используются для ограничения доступа к командам
и обработчикам событий. и обработчикам событий.
## Фильтры ## Фильтры
- `ChatModerOrAdminFilter` - пропускает сообщения только от модераторов и администраторов чата. - `ChatModerOrAdminFilter` пропускает сообщения только от модераторов и администраторов чата;
- `ChatNotInApproveFilter` - пропускает сообщения только из чатов, не входящих в список разрешенных. - `ChatNotInApproveFilter` пропускает сообщения только из чатов, не входящих в список разрешенных.
## Использование ## Использование

View File

@ -1,18 +1,16 @@
# Модуль Report # Модуль Report
Модуль `report` позволяет пользователям сообщать о спам-сообщениях в чате. Данный модуль даёт пользователям возможность сообщать о спам-сообщениях в чате.
## Команды ## Команды
- `/report` - пожаловаться на сообщение как на спам. - `/report` — сообщить администраторам о сообщении как о спаме.
## Использование ## Использование
Чтобы сообщить о сообщении как о спаме, отправьте команду `/report`, ответив на сообщение, которое вы хотите отметить. Модуль уведомит администраторов, которые имеют права модерации. Чтобы указать, что сообщении является спамом, ответьте на него, использовав команду `/report`. Модуль уведомит администраторов, которые имеют права модерации.
### Пример использования ### Пример использования
1. Найдите сообщение, которое вы хотите отметить как спам. 1. Найдите сообщение, которое вы хотите отметить как спам;
2. Ответьте на это сообщение командой `/report`. 2. Ответьте на это сообщение, указав при этом команду `/report`.
Примечание: Команда `/report` должна быть отправлена в ответ на сообщение, которое вы хотите отметить.

View File

@ -1,21 +1,22 @@
## Модуль Welcome ## Модуль Welcome
Модуль `welcome` отвечает за верификацию новых участников чата, используя различные методы проверки. Он помогает предотвратить спам и автоматические атаки на чат, обеспечивая, что новые участники подтверждают свою человеческую природу перед получением доступа. Данный модуль отвечает за верификацию новых участников чата, используя различные методы проверки. Он помогает предотвратить спам и автоматические атаки на чат, поддтверждая «человечность» новых пользователей.
## Команды и Методы ## Функциональность
Модуль поддерживает несколько методов верификации, которые случайным образом применяются к новым участникам чата: Модуль поддерживает несколько методов верификации, которые случайным образом применяются к новым участникам чата:
- **IAmHumanButton** - Верификация с помощью кнопки. - `IAmHumanButton` — верификация с помощью кнопки;
- **IAmHumanInput** - Верификация с помощью ввода текста. - `IAmHumanInput` — верификация с помощью ввода текста;
- **MathButtonsVerification** - Верификация решением математической задачи с помощью кнопок. - `MathButtonsVerification` — верификация решением математической задачи с помощью кнопок;
- **MathInputVerificationMethod** - Верификация решением математической задачи с помощью ввода. - `MathInputVerificationMethod` — верификация решением математической задачи с помощью ввода;
- **QuestionButtonsVerification** - Верификация ответом на вопрос с помощью кнопок. - `QuestionButtonsVerification` — Верификация ответом на вопрос с помощью кнопок;
- **QuestionInputVerification** - Верификация ответом на вопрос с помощью ввода. - `QuestionInputVerification` — верификация ответом на вопрос с помощью ввода.
## Как это работает ## Использование
1. **Обработка новых участников**: Когда новый участник присоединяется к чату, выбирается случайный метод верификации, и создается задача проверки. 1. **Обработка новых участников**: когда новый участник присоединяется к чату, выбирается случайный метод верификации и создаётся задача проверки;
2. **Тайм-аут проверки**: Если новый участник не проходит проверку в течение 30 секунд, его статус в чате меняется на "забанен". 2. **Верификация**:
3. **Верификация по кнопкам**: Если верификация осуществляется с помощью кнопок, обработчик будет ожидать нажатие кнопки от пользователя и проверит правильность ответа. - **Верификация с помощью кнопок**: обработчик ожидает нажатия кнопки от пользователя и проверяет ответ;
4. **Верификация по вводу**: Если верификация осуществляется путем ввода текста, обработчик будет проверять введенный текст и действовать в зависимости от результата проверки. - **Верификация с помощью ввода текста**: обработчик проверять введённый текст и проверяет ответ.
3. **Время на проверку**: если новый участник не проходит проверку в течение 30 секунд, его статус в чате меняется на "забанен".

View File

@ -1,23 +1,7 @@
# Karkas Core # Ядро Karkas
Это ядро Karkas, содержащее базовые компоненты: Ядро Karkas — базовые компоненты платформы «Каркас»: система управления модулями, логирование и утилиты.
- Система управления модулями. - **Система управления модулями** — отвечает за их загрузку, проверку зависимостей и предоставление API для межмодульного взаимодействия;
- Логирование. - **Модуль логирования** — предоставляет функции для записи логов в консоль;
- Утилиты. - **Модуль утилит** — содержит вспомогательные функции, например, для форматирования текста.
## Система управления модулями
Система управления модулями отвечает за:
- Загрузку модулей.
- Проверку зависимостей.
- Предоставление API для взаимодействия между модулями.
## Логирование
Модуль логирования предоставляет функции для записи логов в консоль.
## Утилиты
Модуль утилит содержит вспомогательные функции, например, для форматирования текста.