Исходный код raito.utils.helpers.filters
from aiogram.dispatcher.event.handler import CallbackType, FilterObject, HandlerObject
from aiogram.filters import Filter
from aiogram.types import TelegramObject
[документация]
async def call_filters(
event: TelegramObject,
data: dict,
*filters: CallbackType,
) -> bool:
"""Run a sequence of filters for a Telegram event.
:param event: Telegram update object.
:param data: Aiogram context dictionary.
:param filters: Aiogram filters to apply.
:return: True if all filters pass, False otherwise.
:raises RuntimeError: If `handler` is missing from data.
"""
handler_object: HandlerObject | None = data.get("handler")
if handler_object is None:
raise RuntimeError("Handler object not found")
for f in filters:
if isinstance(f, Filter):
f.update_handler_flags(flags=handler_object.flags)
for f in filters:
obj = FilterObject(callback=f)
if not await obj.call(event, **data):
return False
return True