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

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

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

34 ответов

31 просмотр
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
Да всё херово, как по мне

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта