-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
85 lines (63 loc) · 2.11 KB
/
Copy pathutils.py
File metadata and controls
85 lines (63 loc) · 2.11 KB
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
import datetime
import logging
from constants import Constants
from exceptions import TokenError
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s, %(levelname)s, %(message)s, %(funcName)s",
)
logger = logging.getLogger(__name__)
def is_in_price(name: str | None) -> bool:
"""Check if name is in price.
Args:
name: Name of event.
"""
if name is None:
return False
for key, value in Constants.COST.items():
if name.lower().startswith(key.lower()):
return True
def get_datetime(year: int, month: int, day: int) -> str:
"""
Преобразует год, месяц и день в формат ISO формате.
Args:
year: Год.
month: Месяц.
day: День.
Returns:
Время в формате ISO.
"""
return (
datetime.datetime(
year,
month,
day,
).isoformat()
+ "Z"
)
def get_cost(name: str | None) -> int:
"""Возвращает стоимость события по его имени.
Args:
name: Имя события.
Raises:
AttributeError: Нет такого клиента в списке.
Returns:
Стоимость события.
"""
if name is None:
raise AttributeError("Не передано имя клиента..")
for key, value in Constants.COST.items():
if name.lower().startswith(key.lower()):
return Constants.COST.get(key)
raise AttributeError("Нет такого клиента в списке.")
def check_tokens(token) -> None:
"""Доступность токенов в переменных окружения.
Args:
token: Токен телеграм бота.
Raises:
TokenError: Отсутствует какой-либо из необходимых токенов.
"""
notoken = "TELEGRAM_TOKEN" if token is None else None
if notoken:
logger.critical("Необходимый токен: %s не обнаружен", notoken)
raise TokenError(notoken)