-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstorage.py
99 lines (73 loc) · 2.78 KB
/
storage.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/usr/bin/env python3
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler, CallbackContext
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update, User
import json
"""
Storage structure for bot_data is:
{
user_data: {
<user_id>:
}
}
"""
USER_DATA = "users_data"
USER_BLOOD_SUBSCRIPTION = "blood_subscription"
CURRENT_DIFF = "current_diff"
def check_init_storage(context: CallbackContext):
# print("Bot data:")
# print(context.bot_data)
if context.bot_data.get(USER_DATA) is None:
print("No bot-user data, initializing..")
context.bot_data[USER_DATA] = {}
# print(context.user_data)
# print(context.chat_data)
def update_user_bloodtype_subscription(
user: User, context: CallbackContext, bloodtype: str
):
"""
Stores the user blood type subscription as a list in the bot-user dict.
"""
check_init_storage(context)
user_id = str(user["id"])
if context.bot_data[USER_DATA].get(user_id) is None:
context.bot_data[USER_DATA][user_id] = {USER_BLOOD_SUBSCRIPTION: [bloodtype]}
else:
context.bot_data[USER_DATA][user_id][USER_BLOOD_SUBSCRIPTION] = [bloodtype]
def get_user_bloodtype_subscription(user: User, context: CallbackContext):
check_init_storage(context)
user_id = str(user["id"])
user_data = context.bot_data[USER_DATA].get(user_id)
if user_data == None:
return None
else:
return user_data.get(USER_BLOOD_SUBSCRIPTION)
def delete_user_bloodtype_subscription(user: User, context: CallbackContext):
check_init_storage(context)
user_id = str(user["id"])
return context.bot_data[USER_DATA].pop(user_id, None)
def get_all_users(context: CallbackContext):
check_init_storage(context)
return context.bot_data[USER_DATA].keys()
def is_user_any_blood_subscription(context: CallbackContext, user_id: str):
return is_user_blood_subscription(context, user_id, "any")
def is_user_blood_subscription(context: CallbackContext, user_id: str, bloodtype: str):
check_init_storage(context)
subscription = (
context.bot_data[USER_DATA]
.get(str(user_id), {})
.get(USER_BLOOD_SUBSCRIPTION, None)
)
return bloodtype in subscription
def update_current_diff(context: CallbackContext, diff, diffstr):
check_init_storage(context)
print(f"Updating diff {diff} \n {diffstr}")
# difftime_json = json.dumps(difftime, default=json_util.default)
# difftime_json = json.dumps(difftime, indent=4, sort_keys=True, default=str)
context.bot_data[CURRENT_DIFF] = {
"diff": diff,
"diff_string": diffstr,
}
def get_current_diff_str(context: CallbackContext):
check_init_storage(context)
res = context.bot_data.get(CURRENT_DIFF, {}).get("diff_string", None)
return res