mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-03-28 05:58:33 +08:00
fix(plugin): fix reloadp command not taking effect
- Use write_plugin_config() instead of directly modifying plugin_config dict - Add remove_plugin_config() to clear plugin config before reload - Update plugins to use pconf() and write_plugin_config() for better config management
This commit is contained in:
@@ -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"):
|
||||||
|
|||||||
@@ -341,6 +341,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:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
@@ -289,7 +289,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)
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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 *
|
||||||
|
|
||||||
@@ -161,6 +161,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]:
|
||||||
|
|||||||
Reference in New Issue
Block a user