From 81d44d9f7c26f3585f0f912583f5820c84d5393c Mon Sep 17 00:00:00 2001 From: hteppl Date: Thu, 5 Feb 2026 17:34:58 +0300 Subject: [PATCH] Optimize IsAdminFilter and prevent checking empty `from_user` field --- filters/admin.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/filters/admin.py b/filters/admin.py index 95bd781b..769fe3fc 100644 --- a/filters/admin.py +++ b/filters/admin.py @@ -1,6 +1,6 @@ from aiogram.filters import BaseFilter from aiogram.types import CallbackQuery, Message -from sqlalchemy import select +from sqlalchemy import select, exists from database.db import async_session_maker from database.models import Admin @@ -8,10 +8,14 @@ from database.models import Admin class IsAdminFilter(BaseFilter): async def __call__(self, event: Message | CallbackQuery) -> bool: + if not event.from_user: + return False + try: async with async_session_maker() as session: - result = await session.execute(select(Admin).where(Admin.tg_id == event.from_user.id)) - admin = result.scalar_one_or_none() - return admin is not None - except Exception: + result = await session.execute( + select(exists().where(Admin.tg_id == event.from_user.id)) + ) + return result.scalar() + except (Exception,): return False