Merge pull request #2407 from ayasa520/fix_reloadp

fix(plugin): fix reloadp command not taking effect
This commit is contained in:
Saboteur7
2024-12-13 15:39:33 +08:00
committed by GitHub
6 changed files with 19 additions and 10 deletions

View File

@@ -2,7 +2,7 @@ from bridge.context import Context, ContextType
from bridge.reply import Reply, ReplyType from bridge.reply import Reply, ReplyType
from common.log import logger from common.log import logger
from linkai import LinkAIClient, PushMsg from linkai import LinkAIClient, PushMsg
from config import conf, pconf, plugin_config, available_setting from config import conf, pconf, plugin_config, available_setting, write_plugin_config
from plugins import PluginManager from plugins import PluginManager
import time import time
@@ -51,10 +51,10 @@ class ChatClient(LinkAIClient):
local_config["voice_reply_voice"] = False local_config["voice_reply_voice"] = False
if config.get("admin_password"): if config.get("admin_password"):
if not plugin_config.get("Godcmd"): if not pconf("Godcmd"):
plugin_config["Godcmd"] = {"password": config.get("admin_password"), "admin_users": []} write_plugin_config({"Godcmd": {"password": config.get("admin_password"), "admin_users": []} })
else: else:
plugin_config["Godcmd"]["password"] = config.get("admin_password") pconf("Godcmd")["password"] = config.get("admin_password")
PluginManager().instances["GODCMD"].reload() PluginManager().instances["GODCMD"].reload()
if config.get("group_app_map") and pconf("linkai"): if config.get("group_app_map") and pconf("linkai"):

View File

@@ -342,6 +342,14 @@ def write_plugin_config(pconf: dict):
for k in pconf: for k in pconf:
plugin_config[k.lower()] = pconf[k] plugin_config[k.lower()] = pconf[k]
def remove_plugin_config(name: str):
"""
移除待重新加载的插件全局配置
:param name: 待重载的插件名
"""
global plugin_config
plugin_config.pop(name.lower(), None)
def pconf(plugin_name: str) -> dict: def pconf(plugin_name: str) -> dict:
""" """

View File

@@ -477,7 +477,7 @@ class Godcmd(Plugin):
return model return model
def reload(self): def reload(self):
gconf = plugin_config[self.name] gconf = pconf(self.name)
if gconf: if gconf:
if gconf.get("password"): if gconf.get("password"):
self.password = gconf["password"] self.password = gconf["password"]

View File

@@ -291,7 +291,7 @@ class LinkAI(Plugin):
plugin_conf = json.load(f) plugin_conf = json.load(f)
plugin_conf["midjourney"]["enabled"] = False plugin_conf["midjourney"]["enabled"] = False
plugin_conf["summary"]["enabled"] = False plugin_conf["summary"]["enabled"] = False
plugin_config["linkai"] = plugin_conf write_plugin_config({"linkai": plugin_conf})
return plugin_conf return plugin_conf
except Exception as e: except Exception as e:
logger.exception(e) logger.exception(e)

View File

@@ -1,6 +1,6 @@
import os import os
import json import json
from config import pconf, plugin_config, conf from config import pconf, plugin_config, conf, write_plugin_config
from common.log import logger from common.log import logger
@@ -24,13 +24,13 @@ class Plugin:
plugin_conf = json.load(f) plugin_conf = json.load(f)
# 写入全局配置内存 # 写入全局配置内存
plugin_config[self.name] = plugin_conf write_plugin_config({self.name: plugin_conf})
logger.debug(f"loading plugin config, plugin_name={self.name}, conf={plugin_conf}") logger.debug(f"loading plugin config, plugin_name={self.name}, conf={plugin_conf}")
return plugin_conf return plugin_conf
def save_config(self, config: dict): def save_config(self, config: dict):
try: try:
plugin_config[self.name] = config write_plugin_config({self.name: config})
# 写入全局配置 # 写入全局配置
global_config_path = "./plugins/config.json" global_config_path = "./plugins/config.json"
if os.path.exists(global_config_path): if os.path.exists(global_config_path):

View File

@@ -9,7 +9,7 @@ import sys
from common.log import logger from common.log import logger
from common.singleton import singleton from common.singleton import singleton
from common.sorted_dict import SortedDict from common.sorted_dict import SortedDict
from config import conf, write_plugin_config from config import conf, remove_plugin_config, write_plugin_config
from .event import * from .event import *
@@ -163,6 +163,7 @@ class PluginManager:
def reload_plugin(self, name: str): def reload_plugin(self, name: str):
name = name.upper() name = name.upper()
remove_plugin_config(name)
if name in self.instances: if name in self.instances:
for event in self.listening_plugins: for event in self.listening_plugins:
if name in self.listening_plugins[event]: if name in self.listening_plugins[event]: