import logging from aiogram import Router, F from aiogram.types import Message from bot.utils.database import ( add_sticker_message, ban_user_stickers, is_user_sticker_banned, ) from config import MODERATION_LIMIT logger = logging.getLogger(__name__) router = Router() @router.message(F.sticker | F.animation) async def handle_sticker_or_gif(message: Message): user_id = message.from_user.id chat_id = message.chat.id if await is_user_sticker_banned(user_id, chat_id): try: await message.delete() logger.info( "Deleted sticker/gif from banned user | user=%d chat=%d", user_id, chat_id, ) except Exception as exc: logger.warning("Could not delete sticker/gif: %s", exc) return count = await add_sticker_message(user_id, chat_id) logger.debug("Sticker/gif count | user=%d chat=%d count=%d", user_id, chat_id, count) if count >= MODERATION_LIMIT: await ban_user_stickers(user_id, chat_id) logger.info( "Sticker/gif ban triggered | user=%d chat=%d count=%d", user_id, chat_id, count, ) await message.answer( f"⚠️ {message.from_user.full_name}, вы превысили лимит стикеров/GIF!\n" "Отправка стикеров и GIF ограничена на 5 минут.", parse_mode=None, )