34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Декораторы для бота."""
|
|
|
|
import logging
|
|
from functools import wraps
|
|
from telegram import Update
|
|
from telegram.ext import ContextTypes
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def check_access(func):
|
|
"""Декоратор для проверки прав доступа пользователя."""
|
|
@wraps(func)
|
|
async def wrapper(update: Update, context: ContextTypes.DEFAULT_TYPE, *args, **kwargs):
|
|
user_id = update.effective_user.id
|
|
|
|
# Если доступ не ограничен — пропускаем всех
|
|
if not config.is_access_restricted:
|
|
return await func(update, context, *args, **kwargs)
|
|
|
|
if user_id not in config.allowed_users:
|
|
logger.warning(f"Попытка доступа от запрещённого пользователя {user_id}")
|
|
await update.message.reply_text(
|
|
"❌ *Доступ запрещён*\n\n"
|
|
"Ваш ID не добавлен в список разрешённых пользователей.\n"
|
|
f"Ваш ID: `{user_id}`",
|
|
parse_mode="Markdown"
|
|
)
|
|
return
|
|
|
|
return await func(update, context, *args, **kwargs)
|
|
return wrapper
|