-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.py
83 lines (69 loc) · 1.98 KB
/
config.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
"""
Ce fichier permet de récupérer des valeurs dans le fichier de configuration.
"""
# Imports
import os
import json
# Config
CONFIG_DIR = "resources"
CONFIG_FILE_NAME = "config.json"
def create_folder():
if not os.path.exists(CONFIG_DIR):
os.makedirs(CONFIG_DIR, exist_ok=True)
def create_file(file_name: str, json_default: dict = None):
path = CONFIG_DIR + "/" + file_name
if not os.path.exists(path):
create_folder()
with open(path, "w+", encoding="utf-8") as f:
if json_default:
to_write = json.dumps(json_default, indent=4)
f.write(to_write)
return path
def get_token():
"""
Renvoie le token du bot
"""
return get("TOKEN")
def get_dev_mode():
"""
Renvoie le mode du bot
"""
return get("DEV_MODE")
def get(field: str):
"""
Permet de récupérer une valeur dans le fichier de configuration
---
field: Valeur à récupérer
"""
config_path = create_file(CONFIG_FILE_NAME, json_default={"TOKEN": ""})
with open(config_path, "r", encoding="utf-8") as f:
# On lit le fichier de configuration
fields = field.split(".")
value = f.read()
for field_name in fields:
if isinstance(value, str):
try:
data = json.loads(value)
except json.JSONDecodeError:
return ""
elif isinstance(value, dict):
data = value
else:
return ""
value = get_in_dict(data, field_name)
if value is None:
return ""
return value
def get_in_dict(data: dict, field: str):
"""
Permet de récupérer une valeur dans un dictionnaire
---
data: Dictionnaire
field: Valeur à récupérer
"""
if field in data:
return data[field]
if field.upper() in data:
return data[field.upper()]
if field.lower() in data:
return data[field.lower()]