forked from funpayhub/funpayhub
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
135 lines (108 loc) · 3.66 KB
/
app.py
File metadata and controls
135 lines (108 loc) · 3.66 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
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
133
134
135
from __future__ import annotations
from funpayhub.utils import set_exception_hook
set_exception_hook()
import os
import sys
import asyncio
import logging
import os.path
from typing import Any
from pathlib import Path
from logging.config import dictConfig
import colorama
from funpayhub.logger_conf import (
HubLogMessage,
FileLoggerFormatter,
ConsoleLoggerFormatter,
)
from funpayhub.lib.translater import translater
from funpayhub.app.main import FunPayHub
from funpayhub.app.properties import FunPayHubProperties
from funpayhub.app.args_parser import args
# ---------------------------------------------
# | Logging setup |
# ---------------------------------------------
os.makedirs('logs', exist_ok=True)
dictConfig(
config={
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'file_formatter': {
'()': FileLoggerFormatter,
'fmt': '%(created).3f %(name)s %(taskName)s %(filename)s[%(lineno)d][%(levelno)s] '
'%(message)s',
},
'console_formatter': {
'()': ConsoleLoggerFormatter,
},
},
'handlers': {
'console_debug': {
'formatter': 'console_formatter',
'level': logging.DEBUG,
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
'console': {
'formatter': 'console_formatter',
'level': logging.DEBUG,
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join('logs', 'fph.log'),
'encoding': 'utf-8',
'backupCount': 100,
'maxBytes': 19 * 1024 * 1024,
'formatter': 'file_formatter',
'level': logging.DEBUG,
},
},
'loggers': {
None: {
'level': logging.DEBUG if args.debug else logging.INFO,
'handlers': ['console', 'file'],
},
'aiogram': {
'level': logging.DEBUG if args.debug else logging.WARNING,
},
},
},
)
def log_factory(*args: Any, **kwargs: Any) -> HubLogMessage:
return HubLogMessage(*args, translater=translater, **kwargs)
logging.setLogRecordFactory(log_factory)
colorama.just_fix_windows_console()
# ---------------------------------------------
# | App start |
# ---------------------------------------------
async def main() -> None:
props = FunPayHubProperties()
await props.load()
translater.current_language = props.general.language.real_value
if 'FPH_LOCALES' in os.environ:
locales_path = Path(os.environ['FPH_LOCALES'])
else:
locales_path = Path(__file__).parent / 'locales'
if locales_path.exists():
translater.add_translations(locales_path.absolute())
app = FunPayHub(
properties=props,
translater=translater,
safe_mode=args.safe,
)
if app.telegram.bot.token and not props.telegram.general.token.value:
await props.telegram.general.token.set_value(app.telegram.bot.token)
await app.setup()
exit_code = await app.start()
sys.exit(exit_code)
if __name__ == '__main__':
if args.setup_config:
from funpayhub.setup_config import setup_config
asyncio.run(setup_config())
sys.exit()
logger = logging.getLogger('funpayhub.main')
logger.info(f'{" Я родился ":-^50}')
asyncio.run(main())