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

Хеллоу. Есть где-нибудь хорошая статья по созданию собственных фильтров? Гугл

какой то не богатый мне список предоставил....

34 ответов

8 просмотров
Not Official-Hacker🇷🇺 Автор вопроса

?

хакером себя еще называет😂 читай доку, там есть примеры

Доки

Not Official-Hacker🇷🇺 Автор вопроса
ZeVs
хакером себя еще называет😂 читай доку, там есть пр...

Действительно, без тебя бы не догадался очередной раз в доку залезть

что конкретно тебя интересует?

Not Official-Hacker🇷🇺 Автор вопроса
Groosha
что конкретно тебя интересует?

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

Not Official Hacker🇷🇺
(и да, с ООП ознакомлен)

только хотел тебе это написать)

Not Official-Hacker🇷🇺 Автор вопроса
Groosha
давай конкретнее. Какой тебе фильтр нужен?

Ну мне в общем надо обучится ставить собственные фильтры, чтобы лесенки операторов не писать. К примеру, фильтр на userAct, где userAct - статус пользователя взятый из базы данных.

Asarax ✙ 🇺🇦 ✙ 🇺🇦
Это кто термукс на андроид скачал

А... Тогда знаю таких, каждый второй получается хакер.

Not Official Hacker🇷🇺
Ну мне в общем надо обучится ставить собственные ф...

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

Not Official Hacker🇷🇺
Ну мне в общем надо обучится ставить собственные ф...

ну смотри. Вообще твой фильтр мог бы выглядеть так: from typing import List from aiogram.dispatcher.filters import BoundFilter from aiogram.types import Message from yourmodule import your_func class UserActFilter(BoundFilter): key = "user_act" def __init__(self, user_act: str): self.user_act = user_act async def check(self, message: Message): return your_func(message.from_user_id) == self.user_act Зарегал бы фильтр как dp.filters_factory.bind(UserActFilter, event_handlers=[dp.message_handlers]) И в хэндлерах использовал бы как dp.register_message_handler(your_handler, user_act="admin") или @dp.message_handler(user_act="admin") НО!! ⚠️⚠️⚠️ Если ты в нескольких местах укажешь этот фильтр, то есть огромный шанс, что на каждый апдейт у тебя будет несколько раз вызываться твой your_func(), до тех пор, пока не найдёт хэндлер, который подходит по всем фильтрам. Это неэффективно. Мысль №1: кэшировать запросы, чтобы твой фильтр на каждый апдейт (или на каждый user_id) лез первый раз в базу (или куда там ты лезешь), а все остальные — в кэш. Мысль №2: если тебе 70%+ хэндлеров надо проверять этот user_act, то лучше сделать мидлварь, которая по-любому только один раз на каждый апдейт залезет в СУБД (или куда там тебе надо) и проверит, а заодно прокинет user_act напрямую в вызванный хэндлер (если такой будет). Мысль №3: в aiogram 3.x можно навесить фильтр на роутер (считай, что это диспетчер для подмножества хэндлеров), тогда проверка будет один раз на все фильтры из роутера.

Not Official-Hacker🇷🇺 Автор вопроса
Groosha
ну смотри. Вообще твой фильтр мог бы выглядеть так...

Так.... Вроде дошло, остальное дело практики.... спасибо большое!

Groosha
ну смотри. Вообще твой фильтр мог бы выглядеть так...

А ты использовал что-нибудь кроме словарика для кэширования?

Riz
А ты использовал что-нибудь кроме словарика для кэ...

Обычно кэши короткоживущие, поэтому словарика достаточно

Groosha
Обычно кэши короткоживущие, поэтому словарика дост...

С вытиснением бы хотелось(ттл или как это называется, хз), а то словарик заполнится монструозно

Not Official-Hacker🇷🇺 Автор вопроса
Groosha
ну смотри. Вообще твой фильтр мог бы выглядеть так...

Hi.Вопрос.... А что хуже - лесенка из операторов, которые проверяют userAct, навешаных на хендлер в конце "тип =текст", или действительно около 70% хендлеров/кода, которые также проверяют userAct но уже получается несколько запросов к бд (под каждый хендлер соответственно)?

Not Official-Hacker🇷🇺 Автор вопроса
Groosha
Да всё херово, как по мне

Тоесть... Наилучший вариант, это кеш? С которым я не разу не работал....

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

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

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Чорт! Чорт! Чорт! Стала ставить через GetIt (написано же, что ручками не рекомендуется) Сломалось на дублировании моей TSkLabel. Чтож мне ее по всем проектам переименовывать в...
Катерина Свиридова
7
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Карта сайта