37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
import asyncio
|
|
import traceback
|
|
from astrbot.core import logger
|
|
from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
|
|
from astrbot.core.db import BaseDatabase
|
|
from astrbot.core import LogBroker
|
|
from astrbot.dashboard.server import AstrBotDashboard
|
|
|
|
|
|
class InitialLoader:
|
|
def __init__(self, db: BaseDatabase, log_broker: LogBroker):
|
|
self.db = db
|
|
self.logger = logger
|
|
self.log_broker = log_broker
|
|
|
|
async def start(self):
|
|
core_lifecycle = AstrBotCoreLifecycle(self.log_broker, self.db)
|
|
|
|
core_task = []
|
|
try:
|
|
await core_lifecycle.initialize()
|
|
core_task = core_lifecycle.start()
|
|
except Exception as e:
|
|
logger.critical(traceback.format_exc())
|
|
logger.critical(f"😭 初始化 AstrBot 失败:{e} !!!")
|
|
|
|
self.dashboard_server = AstrBotDashboard(
|
|
core_lifecycle, self.db, core_lifecycle.dashboard_shutdown_event
|
|
)
|
|
task = asyncio.gather(core_task, self.dashboard_server.run())
|
|
|
|
try:
|
|
await task
|
|
except asyncio.CancelledError:
|
|
logger.info("🌈 正在关闭 AstrBot...")
|
|
await core_lifecycle.stop()
|