Python Декоратор с аргументом | Пишу бота для бесед Vk
Я пишу бота для беседы вк, после того как я сделал простой функционал по типу - на сообщение "привет" бот отвечал - "И тебе привет!", я начал с функции Kick, она работает. Но я хотел, чтобы эту функцию смогли использовать лишь те, у кого есть разрешение. Когда человек входит в беседу, бот ловит - кто вошел и с помощью айди человека, который зашел создаёт базу данных. Чтобы не путаться и облегчить себе работу я сделал так - каждый новый пользователь - это новый файл с его данными, а до этого всё записывалось в один файл и поиск нужного юзера осуществлялся с помощью индекса. Сами данные выглядят так(записанные в JSON файл) -
{
"user": [
{
"firstname": "имя",
"lastname": "фамилия",
"iduser": "id(айди)",
"permission": 1(по дефолту стоит 1)
}
]
}
Последняя строка - разрешение, как не странно) Я хотел, чтобы функцию Kick могли использовать пользователи у которых разрешение 6 и выше. Поэтому я решил воспользоваться декоратором с аргументом user_id, для того, чтобы открыть нужный файл(файл с данными того, кто пытался выполнить функцию Kick) и проверить, у него разрешение на эту функцию есть или нет, но по каким то причинам ничего не работает, и скрипт не крашится, я даже не понимаю, почему не работает.
Сам декоратор и функция Kick
def Check(user_id):
def decorator(func):
def wrapper(*args, **kwargs):
try:
Checker = ReadDB('DataBase/users/' + str(user_id) + '.json')
result = func(*args, **kwargs)
permiss = Checker['user'][0]['permission']
if int(permiss) >= 6:
return result
except Exception as E:
print("error: " + E)
return wrapper
return decorator
(между функцией и декоратором есть еще код, просто взял самое важное)
@Check(iduser_for_kick)
def KickUser(userid, fname, lname, sp):
session.method('messages.removeChatUser', {'chat_id': cid, 'member_id': userid})