mirror of
https://gitflic.ru/project/maks1ms/ocab.git
synced 2024-12-24 16:44:44 +03:00
добавлена спецификация модулей
This commit is contained in:
parent
3295d4acec
commit
89fe6a3520
@ -1,3 +1,60 @@
|
|||||||
# Спецификация модулей
|
# Спецификация модулей
|
||||||
|
|
||||||
Каждый модуль - это Py
|
> **Внимание!**
|
||||||
|
>
|
||||||
|
> Данная спецификация еще не закончена и активно разрабатывается.
|
||||||
|
> Могут быть значительные изменения (breaking changes).
|
||||||
|
|
||||||
|
Каждый модуль представлен в виде папки, содержащей два обязательных файла: info.json и `__init__.py`.
|
||||||
|
|
||||||
|
## Метаинформация о модуле (info.json)
|
||||||
|
|
||||||
|
Этот файл содержит метаинформацию о модуле в формате JSON. Пример структуры info.json приведён ниже:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "standard.info",
|
||||||
|
"name": "Info",
|
||||||
|
"description": "Модуль с информацией",
|
||||||
|
"author": "OCAB Team",
|
||||||
|
"version": "1.0",
|
||||||
|
"privileged": false,
|
||||||
|
"dependencies": {
|
||||||
|
"standard.roles": "^1.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `id`: Уникальный идентификатор модуля.
|
||||||
|
- `name`: Название модуля.
|
||||||
|
- `description`: Описание функциональности модуля.
|
||||||
|
- `author`: Автор модуля.
|
||||||
|
- `version`: Версия модуля.
|
||||||
|
- `privileged`: Булево значение, указывающее, является ли модуль привилегированным.
|
||||||
|
- `dependencies`: Объект, описывающий зависимости модуля от других модулей с указанием версии.
|
||||||
|
|
||||||
|
## Режимы выполнения модулей
|
||||||
|
|
||||||
|
Непривилегированный режим (`privileged: false`):
|
||||||
|
- Модуль выполняется в доверенной среде на основе RestrictedPython (это накладывает ряд ограничений);
|
||||||
|
- Может использовать только определенный набор разрешенных пакетов
|
||||||
|
- Имеет доступ к пакету `ocab_core.modules_system.public_api` для взаимодействия с ботом.
|
||||||
|
|
||||||
|
Привилегированный режим (`privileged: true`):
|
||||||
|
- Модуль выполняется без ограничений.
|
||||||
|
- Имеет полный доступ ко всем пакетам.
|
||||||
|
- Должен использоваться с осторожностью и только для модулей, требующих расширенных прав.
|
||||||
|
|
||||||
|
## Жизненный цикл модуля
|
||||||
|
|
||||||
|
1. Загрузка метаданных из `info.json`
|
||||||
|
2. Проверка зависимостей
|
||||||
|
3. Загрузка кода модуля из `__init__.py`
|
||||||
|
4. Вызов функции `module_init` (если она есть)
|
||||||
|
|
||||||
|
## Взаимодействие между модулями
|
||||||
|
|
||||||
|
Модули могут взаимодействовать друг с другом через API, предоставляемое системой управления модулями.
|
||||||
|
|
||||||
|
Например, есть `ocab_core.modules_system.public_api.get_module`.
|
||||||
|
Функция, которая получает модуль или предоставляемые им объекты по его идентификатору.
|
||||||
|
Loading…
Reference in New Issue
Block a user