from datetime import datetime from functools import wraps from aiogram import types from models.state import BotState from config import Config def is_chat_spam(chat_id: int, state: BotState) -> bool: """Проверка на спам""" if chat_id in Config.ADMINS: return False now = datetime.now() if chat_id in state.last_chat_time: delta = (now - state.last_chat_time[chat_id]).total_seconds() if delta < Config.ANTISPAM_DELAY: return True state.last_chat_time[chat_id] = now return False from functools import wraps from aiogram import types def admin_required(need_level: int): """Декоратор для проверки прав администратора (0 = высший уровень)""" def decorator(func): @wraps(func) async def wrapper(message: types.Message, *args, **kwargs): user_id = message.from_user.id user_level = Config.ADMINS.get(user_id, 9999) # 9999 = "нет прав" # чем меньше число, тем выше права if user_level > need_level: await message.answer("⛔ У вас нет доступа к этой команде.") return return await func(message, *args, **kwargs) return wrapper return decorator