forked from vetu11/xPlitterbot
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathuser_manager.py
75 lines (53 loc) · 1.99 KB
/
user_manager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# coding=utf-8
import json
import time
from user import User
class _UserManager:
def __init__(self):
self.user_dict = {}
with open("users.json", encoding="utf-8") as f:
crude_user_dict = json.load(f)
for crude_user in crude_user_dict:
self.user_dict[crude_user["id"]] = User(**crude_user)
self.check_users_expiration_date()
def check_users_expiration_date(self):
to_be_removed = []
for user_id in self.user_dict:
if self.user_dict[user_id].expiration_date < time.time():
to_be_removed.append(user_id)
for user_id in to_be_removed:
self.user_dict.pop(user_id)
def get_user(self, user, user_data=None):
if user_data is not None and "self" in user_data:
user_data["self"].refresh_expiration_date()
return user_data["self"]
if user.id in self.user_dict:
self.user_dict[user.id].refresh_expiration_date()
if user_data is not None:
user_data["self"] = self.user_dict[user.id]
return self.user_dict[user.id]
new_group = User(**user.__dict__)
self.user_dict[user.id] = new_group
if user_data:
user_data["self"] = new_group
return new_group
def get_user_by_id(self, user_id):
user_id = int(user_id)
if user_id in self.user_dict:
self.user_dict[user_id].refresh_expiration_date()
return self.user_dict[user_id]
return None
def user_exists(self, user_id):
if self.get_user_by_id(user_id) is None:
return False
return True
def save(self):
list = []
for user_id in self.user_dict:
list.append(self.user_dict[user_id].to_dict())
with open("users.json", "w", encoding="utf-8") as f:
json.dump(list, f, indent=2)
@staticmethod
def is_user(instance):
return isinstance(instance, User)
user_manager = _UserManager()