mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
from pathlib import Path
|
|
from utils.manager import group_manager
|
|
from services.db_context import db
|
|
from asyncpg.exceptions import DuplicateColumnError
|
|
from services.log import logger
|
|
|
|
try:
|
|
import ujson as json
|
|
except ModuleNotFoundError:
|
|
import json
|
|
try:
|
|
from models.group_remind import GroupRemind
|
|
except ModuleNotFoundError:
|
|
pass
|
|
|
|
|
|
async def init_group_manager():
|
|
"""
|
|
旧数据格式替换为新格式
|
|
初始化数据
|
|
"""
|
|
old_group_level_file = Path() / "data" / "manager" / "group_level.json"
|
|
old_plugin_list_file = Path() / "data" / "manager" / "plugin_list.json"
|
|
if old_group_level_file.exists():
|
|
data = json.load(open(old_group_level_file, "r", encoding="utf8"))
|
|
for key in data.keys():
|
|
group = key
|
|
level = data[key]
|
|
group_manager.set_group_level(group, level)
|
|
old_group_level_file.unlink()
|
|
group_manager.save()
|
|
|
|
if old_plugin_list_file.exists():
|
|
data = json.load(open(old_plugin_list_file, "r", encoding="utf8"))
|
|
for plugin in data.keys():
|
|
for group in data[plugin].keys():
|
|
if group == "default" and not data[plugin]["default"]:
|
|
group_manager.block_plugin(plugin)
|
|
elif not data[plugin][group]:
|
|
group_manager.block_plugin(plugin, group)
|
|
old_plugin_list_file.unlink()
|
|
old_data_table = Path() / "models" / "group_remind.py"
|
|
try:
|
|
if old_data_table.exists():
|
|
b = {
|
|
"hy": "group_welcome",
|
|
"kxcz": "open_case_reset_remind",
|
|
"zwa": "zwa",
|
|
"blpar": "bilibili_parse",
|
|
"epic": "epic_free_game",
|
|
"pa": "pa",
|
|
"almanac": "genshin_alc",
|
|
}
|
|
for group in group_manager.get_data()["group_manager"]:
|
|
for remind in b:
|
|
try:
|
|
status = await GroupRemind.get_status(int(group), remind)
|
|
if status is not None:
|
|
if status:
|
|
await group_manager.open_group_task(group, b[remind])
|
|
logger.info(f"读取旧数据-->{group} 开启 {b[remind]}")
|
|
else:
|
|
await group_manager.close_group_task(group, b[remind])
|
|
logger.info(f"读取旧数据-->{group} 关闭 {b[remind]}")
|
|
except Exception as e:
|
|
pass
|
|
query = db.text("DROP TABLE group_reminds;")
|
|
await db.first(query)
|
|
old_data_table.unlink()
|
|
logger.info("旧数据读取完毕,删除了舍弃表 group_reminds...")
|
|
except (ModuleNotFoundError, DuplicateColumnError):
|
|
pass
|
|
group_manager.save()
|