169 похожих чатов

Вопрос по тройке(не лошадей): теперь можно регистрировать хендлеры как роутерами,

так и диспетчером? Насколько я понял по доке, роутер можно вложить в другой роутрер и дальше как матрешку вкидывать роутеры, но все равно все роутеры вкидываются в диспетчер, верно? И если я объявляю
router1
router2
Дальше
dp.include_router(router1)
router1.include_router(router2)
И вызываю метод filter
router1.filter(...)
router2.filter(...)
Регистрирую хендлеры через router1
И хендлеры через router2
То к хендлерам через router2 будет применен 1 фильтр, а к router1 будет применено 2 фильтра, верно?

И последний вопрос. Сколько фильтров можно привязывать к роутерам?

20 ответов

28 просмотров
Riz- Автор вопроса

@groosha ты пробовал такое?

> То к хендлерам через router2 будет применен 1 фильтр, > а к router1 будет применено 2 фильтра, верно? наоборот. на фильтры не думаю что есть какое-то ограничение кроме здравого смысла. Есть ограничение на то, что не может быть два одновременно активных баунд фильтра с одинаковыми названиями атрибутов.

Riz- Автор вопроса
Vitalii Hreben
> То к хендлерам через router2 будет применен 1 фи...

Как это наоборот?! Я ж вроде вкладываю router2 в router1, значит роутер1 перенимать должен фильтр роутер2 и еще свой. Что-то я логику вложения не понял тогда, если "наоборот"

Riz
Как это наоборот?! Я ж вроде вкладываю router2 в r...

Есть коробка1 с отверствием 10 см(роутер1), ты положил внутрь коробку2 с отверствием 5см(роутер2). Вопрос: можно ли теперь поместить в коробку1 мяч размером 7см или она "переняла" размер отверствия коробки2 и теперь больше 5см не поместится? Размерами коробок кроме отверствия можно пренебречь.

Riz- Автор вопроса
Vitalii Hreben
Есть коробка1 с отверствием 10 см(роутер1), ты пол...

Ну так а если вкладывать сначала 5см и дальше положить 10см, то сначала пролезет до 10 см и потом только до 5 😁

Riz- Автор вопроса

Давай на реальном примере разберем

Riz
Как это наоборот?! Я ж вроде вкладываю router2 в r...

Воспринимай это как наследование фильтров, оно работает сверху вниз, не наоборот

Gabben
screenshot

Можно ещё через них представлять

Riz
Давай на реальном примере разберем

router1 = Router() router2 = Router() router1.include_router(router2) router1.filter(F.text) router2.filter(F.event_from_user.id == 1) @router1.message(text="test") async def f(m): # сработат на сообщение "test" от пользователя с любым id @router2.message() async def f(m): # сработать только на текстовые сообщения от юзера с id 1 (если текст не "test", иначе сработает первый хендлер)

Riz- Автор вопроса

Мне нужно прилепить к роутер1 фильтр с проверкой на админа, на роутер2 прикрепить фильтр на проверку на подписку на канал, на роутер3 навесить фильтр на проверку статуса забанен пользователь по флуду или нет. Далее вкладываю через router1.include_router(router2) По логике и переводу include(включая) роутер2 - роутер1 же должен наследовать фильтр роутер2 ну и тд. Создадутся для админа хендлеры и зарегистрируются под роутер1 и хендлеры под роутер2 не будут проверяться на админа. При этом хендлеры на админа должны проходить проверку только на самого админа, без остальных фильтров на проверку забанен или нет и подписчик или нет. Потому что админ. Пока описывал, сам запутался в логике своей

Riz
Мне нужно прилепить к роутер1 фильтр с проверкой н...

https://docs.aiogram.dev/en/dev-3.x/dispatcher/router.html#how-it-works

Riz- Автор вопроса
Gabben
https://docs.aiogram.dev/en/dev-3.x/dispatcher/rou...

Да, я видел эту иерархию. Прост пока в голове не укладывается

Riz
Мне нужно прилепить к роутер1 фильтр с проверкой н...

Вложить роутер не значит расширить/дополнить первый роутер хендлерами и фильтрами из второго роутера

Riz
Мне нужно прилепить к роутер1 фильтр с проверкой н...

так это разные роутеры, зачем их включать друг в друга? включай их в диспетчер или другой независимый роутер dp.include_router(admin_router) dp.include_router(subscribe_router) dp.include_router(banned_user_router)

Riz- Автор вопроса
Vitalii Hreben
так это разные роутеры, зачем их включать друг в д...

Ну так если нужно проверить забанен или нет, далее проверить подписчик или нет. При этом не важно подписчик или нет, пользователь может флудить и будучи подписанным или нет. Иначе получится, что роутер просто пропустит не забаненного пользователя и врубит хендлер не подписанному

Riz
Ну так если нужно проверить забанен или нет, далее...

А зачем перед всем этим проверять на админа?

Riz- Автор вопроса
Gabben
А зачем перед всем этим проверять на админа?

Офис менеджер и управляющий. Две роли. Одна команда, два хендлера, через одну пройдет один, через вторую другой. Хочу в бд не давать каждому отдельно привелегии, а закинуть права офис менеджера офис менеджеру и если админ прошел проверку по фильтру админа, то и админу.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
вот что получается в интерпрететоре, работает и результаты выгляд разумными, но то как выглядит код мне не нравиться, а понять куда двигаться не очень могу, если кому не лень ...
Fedor
42
Карта сайта