Skip to content

☑️ Разрешения модуля

Фреймворк реализует систему разрешений для модулей, позволяя им запрашивать доступ к определенным функциям или ресурсам. Эти разрешения объявляются в файле 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, запрашивающего доступ к базе данных и доступ к загрузчику:

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

Убедитесь, что вы запрашиваете только те разрешения, которые действительно нужны вашему модулю.