From 85471fd0df843c0e5387f4d0e2f44cc653c5dfcc Mon Sep 17 00:00:00 2001 From: Rock Chin <1010553892@qq.com> Date: Mon, 2 Jan 2023 13:06:48 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E6=B7=BB=E5=8A=A0=E7=83=AD=E9=87=8D?= =?UTF-8?q?=E8=BD=BD=E7=9B=B8=E5=85=B3=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config-template.py | 6 +++--- pkg/qqbot/manager.py | 7 +++++++ pkg/utils/reloader.py | 2 ++ pkg/utils/updater.py | 1 + 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/config-template.py b/config-template.py index bd5180d9..f1903f9f 100644 --- a/config-template.py +++ b/config-template.py @@ -32,6 +32,9 @@ openai_config = { }, } +# 管理员QQ号,用于接收报错等通知,为0时不发送通知 +admin_qq = 0 + # 情景预设(机器人人格) # 每个会话的预设信息,影响所有会话,无视指令重置 # 可以通过这个字段指定某些情况的回复,可直接用自然语言描述指令 @@ -40,9 +43,6 @@ openai_config = { # 可参考 https://github.com/PlexPt/awesome-chatgpt-prompts-zh default_prompt = "如果我之后想获取帮助,请你说“输入!help获取帮助”" -# 管理员QQ号,用于接收报错等通知,为0时不发送通知 -admin_qq = 0 - # 群内响应规则 # 符合此消息的群内消息即使不包含at机器人也会响应 # 支持消息前缀匹配及正则表达式匹配 diff --git a/pkg/qqbot/manager.py b/pkg/qqbot/manager.py index fd71739e..b8d80454 100644 --- a/pkg/qqbot/manager.py +++ b/pkg/qqbot/manager.py @@ -73,6 +73,9 @@ class QQBotManager: else: self.reply_filter = pkg.qqbot.filter.ReplyFilter([]) + # 由于YiriMirai的bot对象是单例的,且shutdown方法暂时无法使用 + # 故只在第一次初始化时创建bot对象,重载之后使用原bot对象 + # 因此,bot的配置不支持热重载 if first_time_init: self.first_time_init(mirai_http_api_config) else: @@ -94,6 +97,10 @@ class QQBotManager: go(self.on_group_message, (event,)) def unsubscribe_all(): + """取消所有订阅 + + 用于在热重载流程中卸载所有事件处理器 + """ assert isinstance(self.bot, Mirai) bus = self.bot.bus assert isinstance(bus, mirai.models.bus.ModelEventBus) diff --git a/pkg/utils/reloader.py b/pkg/utils/reloader.py index 10bfff49..b2903570 100644 --- a/pkg/utils/reloader.py +++ b/pkg/utils/reloader.py @@ -12,6 +12,7 @@ from main import log_colors_config def walk(module, prefix=''): + """遍历并重载所有模块""" for item in pkgutil.iter_modules(module.__path__): if item.ispkg: walk(__import__(module.__name__ + '.' + item.name, fromlist=['']), prefix + item.name + '.') @@ -29,6 +30,7 @@ def reload_all(): import main main.stop() + # 重载所有模块 context = pkg.utils.context.context walk(pkg) importlib.reload(__import__('config')) diff --git a/pkg/utils/updater.py b/pkg/utils/updater.py index bfa6d35e..90b14004 100644 --- a/pkg/utils/updater.py +++ b/pkg/utils/updater.py @@ -2,6 +2,7 @@ import dulwich.porcelain def update_all(): + """使用dulwich更新源码""" try: from dulwich import porcelain repo = porcelain.open_repo('.')