From 215ed7ab0ebd73141e728405c1c84c93274ef963 Mon Sep 17 00:00:00 2001 From: Rock Chin <1010553892@qq.com> Date: Wed, 22 Feb 2023 23:37:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8A=A8=E6=80=81=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E8=B6=85=E6=97=B6=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=BB=A5=E4=BE=BF=E5=85=B6=E5=9C=A8=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=E5=8F=AF=E4=BF=AE=E6=94=B9=20(#172)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/qqbot/manager.py | 30 +++++++++++++++++++++--------- pkg/qqbot/process.py | 5 ++--- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/pkg/qqbot/manager.py b/pkg/qqbot/manager.py index 0319af51..92380c94 100644 --- a/pkg/qqbot/manager.py +++ b/pkg/qqbot/manager.py @@ -6,6 +6,7 @@ import threading import mirai.models.bus from mirai import At, GroupMessage, MessageEvent, Mirai, StrangerMessage, WebSocketAdapter, HTTPAdapter, \ FriendMessage, Image +from func_timeout import func_set_timeout import pkg.openai.session import pkg.openai.manager @@ -207,7 +208,7 @@ class QQBotManager: # 私聊消息处理 def on_person_message(self, event: MessageEvent): - + import config reply = '' if event.sender.id == self.bot.qq: @@ -220,9 +221,15 @@ class QQBotManager: failed = 0 for i in range(self.retry): try: - reply = processor.process_message('person', event.sender.id, str(event.message_chain), - event.message_chain, - event.sender.id) + + @func_set_timeout(config.process_message_timeout) + def time_ctrl_wrapper(): + reply = processor.process_message('person', event.sender.id, str(event.message_chain), + event.message_chain, + event.sender.id) + return reply + + reply = time_ctrl_wrapper() break except FunctionTimedOut: logging.warning("person_{}: 超时,重试中({})".format(event.sender.id, i)) @@ -242,7 +249,7 @@ class QQBotManager: # 群消息处理 def on_group_message(self, event: GroupMessage): - + import config reply = '' def process(text=None) -> str: @@ -254,10 +261,15 @@ class QQBotManager: failed = 0 for i in range(self.retry): try: - replys = processor.process_message('group', event.group.id, - str(event.message_chain).strip() if text is None else text, - event.message_chain, - event.sender.id) + @func_set_timeout(config.process_message_timeout) + def time_ctrl_wrapper(): + replys = processor.process_message('group', event.group.id, + str(event.message_chain).strip() if text is None else text, + event.message_chain, + event.sender.id) + return replys + + replys = time_ctrl_wrapper() break except FunctionTimedOut: logging.warning("group_{}: 超时,重试中({})".format(event.group.id, i)) diff --git a/pkg/qqbot/process.py b/pkg/qqbot/process.py index 7eb30bfb..cd4e3e58 100644 --- a/pkg/qqbot/process.py +++ b/pkg/qqbot/process.py @@ -2,7 +2,6 @@ import asyncio import mirai -from func_timeout import func_set_timeout import logging from mirai import MessageChain, Plain @@ -10,7 +9,8 @@ from mirai import MessageChain, Plain # 这里不使用动态引入config # 因为在这里动态引入会卡死程序 # 而此模块静态引用config与动态引入的表现一致 -import config as config_init_import +# 已弃用,由于超时时间现已动态使用 +# import config as config_init_import import pkg.openai.session import pkg.openai.manager @@ -26,7 +26,6 @@ import pkg.plugin.models as plugin_models processing = [] -@func_set_timeout(config_init_import.process_message_timeout) def process_message(launcher_type: str, launcher_id: int, text_message: str, message_chain: MessageChain, sender_id: int) -> MessageChain: global processing