Optimize IsAdminFilter and prevent checking empty from_user field
This commit is contained in:
+9
-5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user