mirror of
https://gitflic.ru/project/maks1ms/ocab.git
synced 2024-12-24 00:33:05 +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