Перейти к содержанию

Декораторы

@check_roles

Ограничение доступа к callback-обработчику по ролям.

Импорт: from bot_framework import check_roles

Требования к классу:

Атрибут Тип Обязательный Описание
role_repo IRoleRepo Да Источник ролей
allowed_roles set[str] \| None Да Допустимые роли. None = все
callback_answerer ICallbackAnswerer Нет Alert при отказе в доступе

Пример:

from bot_framework import BotCallback, check_roles

class MyHandler:
    def __init__(self, role_repo, callback_answerer):
        self.role_repo = role_repo
        self.callback_answerer = callback_answerer
        self.allowed_roles: set[str] = {"admin"}

    @check_roles
    def handle(self, callback: BotCallback) -> None:
        ...

@check_message_roles

Ограничение доступа к message-обработчику по ролям.

Импорт: from bot_framework import check_message_roles

Требования к классу:

Атрибут Тип Обязательный Описание
role_repo IRoleRepo Да Источник ролей
allowed_roles set[str] \| None Да Допустимые роли. None = все
message_sender IMessageSender Нет Сообщение при отказе в доступе

Пример:

from bot_framework import BotMessage, check_message_roles

class MyHandler:
    def __init__(self, role_repo, message_sender):
        self.role_repo = role_repo
        self.message_sender = message_sender
        self.allowed_roles: set[str] = {"manager"}

    @check_message_roles
    def handle(self, message: BotMessage) -> None:
        ...