57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
from __future__ import annotations
|
||
|
||
from aiogram import Bot, Dispatcher
|
||
from aiogram.client.default import DefaultBotProperties
|
||
|
||
from src.bootstrap.logging import setup_logging
|
||
from src.core.config import load_settings
|
||
from src.storage.schema import init_schema
|
||
from src.telegram.routers import setup_routers
|
||
from src.trading.journal.service import JournalService
|
||
|
||
|
||
def create_app() -> tuple[Bot, Dispatcher]:
|
||
settings = load_settings()
|
||
setup_logging(settings.log_level)
|
||
|
||
journal = JournalService()
|
||
|
||
try:
|
||
init_schema()
|
||
except Exception as exc:
|
||
try:
|
||
journal.log_critical(
|
||
"app_bootstrap_failed",
|
||
f"Не удалось инициализировать схему БД: {exc}",
|
||
{
|
||
"env": settings.app_env,
|
||
"exchange_name": settings.exchange_name,
|
||
"default_symbol": settings.default_symbol,
|
||
},
|
||
)
|
||
except Exception:
|
||
pass
|
||
raise
|
||
|
||
try:
|
||
journal.log_info(
|
||
"app_start",
|
||
"Приложение запущено.",
|
||
{
|
||
"env": settings.app_env,
|
||
"exchange_name": settings.exchange_name,
|
||
"default_symbol": settings.default_symbol,
|
||
},
|
||
)
|
||
except Exception:
|
||
# журнал не должен ломать запуск приложения
|
||
pass
|
||
|
||
bot = Bot(
|
||
token=settings.bot_token,
|
||
default=DefaultBotProperties(parse_mode=settings.bot_parse_mode),
|
||
)
|
||
dispatcher = Dispatcher()
|
||
setup_routers(dispatcher)
|
||
|
||
return bot, dispatcher |