25 lines
1.0 KiB
Python
25 lines
1.0 KiB
Python
from aiogram import Router
|
|
from aiogram.types import ChatMemberUpdated
|
|
|
|
from core.cache_config import BLOCKED_EVENTS_REDIS_KEY
|
|
from core.redis_cache import cache_rpush
|
|
from logger import logger
|
|
|
|
router = Router(name="chat_member_router")
|
|
|
|
|
|
@router.my_chat_member()
|
|
async def on_my_chat_member(event: ChatMemberUpdated):
|
|
tg_id = event.from_user.id
|
|
new_status = event.new_chat_member.status
|
|
|
|
if new_status == "kicked":
|
|
await cache_rpush(BLOCKED_EVENTS_REDIS_KEY, {"tg_id": tg_id, "action": "block"})
|
|
logger.info(f"[ChatMember] Пользователь {tg_id} заблокировал бота → событие в Redis")
|
|
|
|
elif new_status == "member":
|
|
old_status = event.old_chat_member.status if event.old_chat_member else None
|
|
if old_status in ("kicked", "left"):
|
|
await cache_rpush(BLOCKED_EVENTS_REDIS_KEY, {"tg_id": tg_id, "action": "unblock"})
|
|
logger.info(f"[ChatMember] Пользователь {tg_id} разблокировал бота → событие в Redis")
|