Optimize IsAdminFilter and prevent checking empty from_user field

This commit is contained in:
hteppl
2026-02-05 17:34:58 +03:00
parent 62cde5d6d5
commit 81d44d9f7c
+9 -5
View File
@@ -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