aiogram 3 уровни доступа через ChatTypesFilter

подскажите как лучше реализовать уровни доступа в боте что по ним ботт реагировал.

Есть ChatTypesFilter в котором есть уровень IsBoss и IsAdmin которые подтягиваются из базы данных

Есть хэндлер

@banlist_router.message(Command("ban"), IsBoss() or IsAdmin())
async def ban_user(message: types.Message, bot: Bot):
    print('some_code')

надо чтобы бот реагировал является ли пользователь боссом или админом. А сейчас он реагирует на одно условие которое первое - IsBoss() . Мне нужно на каждую функцию настроить разные уровни доступа


Ответы (1 шт):

Автор решения: CausonQ

Если обратиться к документации:

Also, if you want to use two alternative ways to run the same handler (“or” condition) you can register the handler twice or more times as you like

@<router>.message(F.text == "hi")
@<router>.message(CommandStart())

Регистрируем несколько хендлеров и они будут работать как или

Должно быть примерно так:

@banlist_router.message(Command("ban"), IsAdmin())
@banlist_router.message(Command("ban"), IsBoss())
async def ban_user(message: types.Message, bot: Bot):
    print('some_code')
→ Ссылка