feat: 添加异步任务管理器和本地存储管理器,重构统计模块
This commit is contained in:
43
bot.py
43
bot.py
@@ -1,7 +1,6 @@
|
||||
import asyncio
|
||||
import hashlib
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import time
|
||||
@@ -15,6 +14,8 @@ from src.common.crash_logger import install_crash_handler
|
||||
from src.main import MainSystem
|
||||
from rich.traceback import install
|
||||
|
||||
from src.manager.async_task_manager import async_task_manager
|
||||
|
||||
install(extra_lines=3)
|
||||
|
||||
# 设置工作目录为脚本所在目录
|
||||
@@ -64,38 +65,6 @@ def easter_egg():
|
||||
print(rainbow_text)
|
||||
|
||||
|
||||
def init_config():
|
||||
# 初次启动检测
|
||||
if not os.path.exists("config/bot_config.toml"):
|
||||
logger.warning("检测到bot_config.toml不存在,正在从模板复制")
|
||||
|
||||
# 检查config目录是否存在
|
||||
if not os.path.exists("config"):
|
||||
os.makedirs("config")
|
||||
logger.info("创建config目录")
|
||||
|
||||
shutil.copy("template/bot_config_template.toml", "config/bot_config.toml")
|
||||
logger.info("复制完成,请修改config/bot_config.toml和.env中的配置后重新启动")
|
||||
if not os.path.exists("config/lpmm_config.toml"):
|
||||
logger.warning("检测到lpmm_config.toml不存在,正在从模板复制")
|
||||
|
||||
# 检查config目录是否存在
|
||||
if not os.path.exists("config"):
|
||||
os.makedirs("config")
|
||||
logger.info("创建config目录")
|
||||
|
||||
shutil.copy("template/lpmm_config_template.toml", "config/lpmm_config.toml")
|
||||
logger.info("复制完成,请修改config/lpmm_config.toml和.env中的配置后重新启动")
|
||||
|
||||
|
||||
def init_env():
|
||||
# 检测.env文件是否存在
|
||||
if not os.path.exists(".env"):
|
||||
logger.error("检测到.env文件不存在")
|
||||
shutil.copy("template/template.env", "./.env")
|
||||
logger.info("已从template/template.env复制创建.env,请修改配置后重新启动")
|
||||
|
||||
|
||||
def load_env():
|
||||
# 直接加载生产环境变量配置
|
||||
if os.path.exists(".env"):
|
||||
@@ -140,6 +109,10 @@ def scan_provider(env_config: dict):
|
||||
async def graceful_shutdown():
|
||||
try:
|
||||
logger.info("正在优雅关闭麦麦...")
|
||||
|
||||
# 停止所有异步任务
|
||||
await async_task_manager.stop_and_wait_all_tasks()
|
||||
|
||||
tasks = [t for t in asyncio.all_tasks() if t is not asyncio.current_task()]
|
||||
for task in tasks:
|
||||
task.cancel()
|
||||
@@ -235,9 +208,9 @@ def raw_main():
|
||||
|
||||
check_eula()
|
||||
print("检查EULA和隐私条款完成")
|
||||
|
||||
easter_egg()
|
||||
init_config()
|
||||
init_env()
|
||||
|
||||
load_env()
|
||||
|
||||
env_config = {key: os.getenv(key) for key in os.environ}
|
||||
|
||||
Reference in New Issue
Block a user