-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.py
132 lines (116 loc) · 5.25 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# EcoleDirecte Bot (config.py)
# Copyright (C) 2023-2024 MrBeam89_
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
import yaml
import re
from os.path import basename
ECOLEDIRECTE_DIR = __file__.rstrip(basename(__file__))
CONFIG_FILENAME = f"config.yaml"
def get_config():
# Vérification fichier de configuration
try:
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{CONFIG_FILENAME}"...')
with open(f"{ECOLEDIRECTE_DIR}{CONFIG_FILENAME}", "r") as config_file:
config = yaml.safe_load(config_file)
print(f'Ouverture de "{ECOLEDIRECTE_DIR}{CONFIG_FILENAME}" réussie!')
BOT_TOKEN_FILENAME = config["BOT_TOKEN_FILENAME"]
DB_KEY_FILENAME = config['DB_KEY_FILENAME']
DB_FILENAME = config["DB_FILENAME"]
BOT_COMMAND_PREFIX = config["BOT_COMMAND_PREFIX"]
LOGGING_LEVEL = config["LOGGING_LEVEL"]
COOLDOWN = config["COOLDOWN"]
EMBED_COLOR = config["EMBED_COLOR"]
config_file.close()
except FileNotFoundError:
print(f'"{CONFIG_FILENAME}" est introuvable!')
input("Appuyez sur Entree pour quitter...")
exit()
# Vérification du fichier de token
try:
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{BOT_TOKEN_FILENAME}"...')
token_file = open(f"{ECOLEDIRECTE_DIR}{BOT_TOKEN_FILENAME}", "r")
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{BOT_TOKEN_FILENAME}" réussie!')
token_file.close()
except FileNotFoundError:
print(f'Fichier introuvable! Placez le token dans le fichier "{ECOLEDIRECTE_DIR}{BOT_TOKEN_FILENAME}"')
input("Appuyez sur Entree pour quitter...")
exit()
# Vérification du fichier de clé pour la base de données
try:
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{DB_KEY_FILENAME}"...')
db_key_file = open(f"{ECOLEDIRECTE_DIR}{DB_KEY_FILENAME}", "r")
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{DB_KEY_FILENAME}", réussie!')
db_key_file.close()
except FileNotFoundError:
from keygen import getkey
print(f'Fichier introuvable! Création d\'une nouvelle clé dans le fichier "{ECOLEDIRECTE_DIR}{DB_KEY_FILENAME}"...')
getkey()
print(f'Création d\'une nouvelle clé dans le fichier "{ECOLEDIRECTE_DIR}{DB_KEY_FILENAME}" réussie!')
print("/!\ ATTENTION /!\ La base de données (si non vide) ne fonctionnera pas correctement avec la nouvelle clé.")
# Vérification du fichier de la base de données
try:
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{DB_FILENAME}"...')
db_key_file = open(f"{ECOLEDIRECTE_DIR}{DB_FILENAME}", "r")
print(f'Ouverture du fichier "{ECOLEDIRECTE_DIR}{DB_FILENAME}" réussie!')
db_key_file.close()
except FileNotFoundError:
print(f'Fichier introuvable! Création de la base de données "{ECOLEDIRECTE_DIR}{DB_FILENAME}"...')
# Vérification du préfixe du bot
if not isinstance(BOT_COMMAND_PREFIX, str):
print("Préfixe de commande de bot invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
else:
print("Préfixe de commande de bot valide!")
# Vérification du niveau de journalisation
if not isinstance(LOGGING_LEVEL, int):
print("Niveau de journalisation invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
else:
print("Niveau de journalisation valide!")
# Vérification du cooldown
if not isinstance(COOLDOWN, int):
print("Cooldown invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
else:
print("Cooldown valide!")
# Vérification de la couleur de l'embed
if not isinstance(EMBED_COLOR, int):
print("Couleur de l'embed invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
else:
# Vérifie si le format 0x?????? est respecté (ignore les zéros en trop)
hex_str = format(EMBED_COLOR, '06x')
if len(hex_str) != 6:
print("Couleur de l'embed invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
else:
# Vérifie si le code couleur est valide
r = int(hex_str[0:2], 16)
v = int(hex_str[2:4], 16)
b = int(hex_str[4:6], 16)
if 0 <= r <= 255 and 0 <= v <= 255 and 0 <= b <= 255:
print("Couleur de l'embed valide!")
else:
print("Couleur de l'embed invalide!")
input("Appuyez sur Entree pour quitter...")
exit()
# Renvoie la configuration
print("Configuration valide!")
return config