redis cache/ webhook abuse/ separate streams for sending and requesting panels/ increased security and more

This commit is contained in:
Vladless
2026-02-26 22:00:15 +03:00
parent 405c3fef1b
commit 6f76608b04
43 changed files with 945 additions and 269 deletions
+13
View File
@@ -16,6 +16,7 @@ from database import delete_user_data
from database.models import BlockedUser, Key, ManualBan
from filters.admin import IsAdminFilter
from logger import logger
from middlewares.ban_checker import invalidate_ban_cache
from ..panel.keyboard import AdminPanelCallback
from .keyboard import (
@@ -245,8 +246,12 @@ async def handle_clear_shadow_bans(callback_query: CallbackQuery, session: Async
)
return
tg_ids_result = await session.execute(select(ManualBan.tg_id).where(ManualBan.reason == "shadow"))
tg_ids_to_invalidate = [r[0] for r in tg_ids_result.all()]
await session.execute(delete(ManualBan).where(ManualBan.reason == "shadow"))
await session.commit()
for uid in tg_ids_to_invalidate:
await invalidate_ban_cache(uid)
await callback_query.message.answer(
text=f"🗑️ Очищено {total_count} записей теневых банов из базы данных.",
@@ -279,8 +284,14 @@ async def handle_clear_manual_bans(callback_query: CallbackQuery, session: Async
)
return
tg_ids_result = await session.execute(
select(ManualBan.tg_id).where(or_(ManualBan.reason != "shadow", ManualBan.reason.is_(None)))
)
tg_ids_to_invalidate = [r[0] for r in tg_ids_result.all()]
await session.execute(delete(ManualBan).where(or_(ManualBan.reason != "shadow", ManualBan.reason.is_(None))))
await session.commit()
for uid in tg_ids_to_invalidate:
await invalidate_ban_cache(uid)
await callback_query.message.answer(
text=f"🗑️ Очищено {total_count} записей ручных банов из базы данных.",
@@ -358,6 +369,8 @@ async def handle_preemptive_ids_input(message: Message, state: FSMContext, sessi
await session.execute(stmt)
await session.commit()
for uid in tg_ids:
await invalidate_ban_cache(uid)
await message.answer(
f"✅ Успешно добавлено в теневой бан: <b>{len(tg_ids)}</b> пользователей.",