It's my tg bot for schedule. version 0.1
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
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
|
||||
Reference in New Issue
Block a user