В тексті програм для Telegram ботів зустрічаю щось таке (трохи змінив для наочності):
ADMINS = [123456, 234567]
def restrict(f):
def inner(*args, **kwargs):
update = args[0]
if update and hasattr(update, 'message'):
chat_id = update.message.chat_id
if chat_id in ADMINS:
print('Доступ адмінам дозволено!')
return f(*args, **kwargs)
else:
print('Доступ заборонено!')
else:
print('Немає аргументу update')
return inner
@restrict
def start(self, update, context):
print('тут код функції, буде виконано якщо chat_id = update.message.chat_id')
… тут дещо пропустив ….
command_start = CommandHandler('start', start)
updater.dispatcher.add_handler(command_start )
такий запис відповідає такому коду показаному нижче:
do_function = restrict(start)
…. тут багато пропущено ….
command_start = CommandHandler('start', do_function)
updater.dispatcher.add_handler(command_start )
Зобов’язаний зауважити, відповідність коду визначається по результату виконання для клієнта, не гарантується, що код для виконання (бінарний код) такий самий