From 49de94069f6ffbbf0c675f33559b0d5c8dbabe05 Mon Sep 17 00:00:00 2001 From: Vladless Date: Sat, 14 Feb 2026 22:42:17 +0300 Subject: [PATCH] admins do not touch the shadow ban --- middlewares/ban_checker.py | 2 +- middlewares/direct_start_blocker.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/middlewares/ban_checker.py b/middlewares/ban_checker.py index d054c166..5862b2f1 100644 --- a/middlewares/ban_checker.py +++ b/middlewares/ban_checker.py @@ -80,7 +80,7 @@ class BanCheckerMiddleware(BaseMiddleware): until = ban_info["until"] admin_ids = set(ADMIN_ID) if isinstance(ADMIN_ID, (list, tuple)) else {ADMIN_ID} - if reason == "shadow" and tg_id in admin_ids: + if tg_id in admin_ids: return await handler(event, data) if reason == "shadow": diff --git a/middlewares/direct_start_blocker.py b/middlewares/direct_start_blocker.py index eb58cd43..d597ed35 100644 --- a/middlewares/direct_start_blocker.py +++ b/middlewares/direct_start_blocker.py @@ -7,7 +7,7 @@ from aiogram import BaseMiddleware from aiogram.types import Message, Update from sqlalchemy.ext.asyncio import AsyncSession -from config import DISABLE_DIRECT_START +from config import ADMIN_ID, DISABLE_DIRECT_START from core.bootstrap import MODES_CONFIG from database import check_user_exists from logger import logger @@ -31,6 +31,14 @@ class DirectStartBlockerMiddleware(BaseMiddleware): if not direct_start_disabled: return await handler(event, data) + user = getattr(event, "message", None) and getattr(event.message, "from_user", None) + if not user and getattr(event, "callback_query", None): + user = getattr(event.callback_query, "from_user", None) + if user: + admin_ids = set(ADMIN_ID) if isinstance(ADMIN_ID, (list, tuple)) else {ADMIN_ID} + if user.id in admin_ids: + return await handler(event, data) + message: Message | None = getattr(event, "message", None) if not message or not message.text: return await handler(event, data)