☑️ Разрешения модуля
Фреймворк реализует систему разрешений для модулей, позволяя им запрашивать доступ к определенным функциям или ресурсам. Эти разрешения объявляются в файле config.yaml
(или fallback info.yaml
) модуля под ключом permissions.
Когда пользователь пытается установить или обновить модуль, отображаются запрашиваемые разрешения, и в зависимости от конфигурации системы может потребоваться подтверждение. Если требуемое разрешение не выполняется (например, require_db
, когда база данных отключена), загрузка модуля может быть пропущена.
Разрешения определяются в base.module.Permissions
. Доступные на данный момент разрешения:
use_db: Указывает, что модуль использует базу данных, но потенциально может работать и без нее, если база данных отключена в основной конфигурации бота (
config.enable_db = false
). Если БД включена, то после инициализации модуль получит объект Database в атрибуте self.db.require_db: Объявляет строгую зависимость от базы данных. Если база данных отключена в конфигурации бота, модуль не будет загружен. Если БД включена, то будет заполнен
self.db
.use_loader: Предоставляет модулю доступ к
ModuleLoader
через атрибутself.loader
.ВНИМАНИЕ
Это мощное разрешение, поскольку
ModuleLoader
предоставляет методы для загрузки, выгрузки, установки, обновления и управления другими модулями и зависимостями. Предоставляйте это право только доверенным модулям.
Пример config.yaml
, запрашивающего доступ к базе данных и доступ к загрузчику:
# config.yaml
info:
name: AdvancedModule
author: Dev Team
version: 1.2.0
description: Does advanced stuff requiring DB and module management.
auto_load: true
permissions:
- require_db # Для работы необходима база данных
- use_loader # Требуется доступ к API ModuleLoader
config:
# ... специфическая конфигурация модуля ...
WARNING
Убедитесь, что вы запрашиваете только те разрешения, которые действительно нужны вашему модулю.