From bb1563afab8bdb20acdabaa0256ccf8197434cc4 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 11 Sep 2025 13:24:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E9=98=B2=E6=AD=A2=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E4=BA=BA=E5=9B=9E=E5=A4=8D=E8=87=AA=E8=BA=AB=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加配置选项 `allow_reply_self` 控制是否允许机器人回复自己发送的消息 当此选项为 false 时,在回复动作执行前检查目标用户 ID,如果是机器人自身则跳过回复 同时删除无用的测试文件 `test_planner_personality.py --- src/chat/chat_loop/cycle_processor.py | 4 ++++ src/config/official_configs.py | 1 + template/bot_config_template.toml | 4 +++- test_planner_personality.py | 0 4 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 test_planner_personality.py diff --git a/src/chat/chat_loop/cycle_processor.py b/src/chat/chat_loop/cycle_processor.py index 52092ee1f..f7bcd20fe 100644 --- a/src/chat/chat_loop/cycle_processor.py +++ b/src/chat/chat_loop/cycle_processor.py @@ -311,6 +311,10 @@ class CycleProcessor: if reply_actions: logger.info(f"{self.log_prefix} 正在执行文本回复...") for action in reply_actions: + target_user_id = action.get("action_message",{}).get("chat_info_user_id","") + if target_user_id == global_config.bot.qq_account and not global_config.chat.allow_reply_self: + logger.warning("选取的reply的目标为bot自己,跳过reply action") + continue result = await execute_action(action) if isinstance(result, Exception): logger.error(f"{self.log_prefix} 回复动作执行异常: {result}") diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 3230888b9..b97b5443f 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -73,6 +73,7 @@ class ChatConfig(ValidatedConfigBase): talk_frequency: float = Field(default=1.0, description="聊天频率") mentioned_bot_inevitable_reply: bool = Field(default=False, description="提到机器人的必然回复") at_bot_inevitable_reply: bool = Field(default=False, description="@机器人的必然回复") + allow_reply_self: bool = Field(default=False, description="是否允许回复自己说的话") talk_frequency_adjust: list[list[str]] = Field(default_factory=lambda: [], description="聊天频率调整") focus_value: float = Field(default=1.0, description="专注值") focus_mode_quiet_groups: List[str] = Field( diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 07c791c6b..3a7ed77de 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "6.8.1" +version = "6.8.2" #----以下是给开发人员阅读的,如果你只是部署了MoFox-Bot,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -123,6 +123,8 @@ enable_breaking_mode = true # 是否启用自动进入breaking模式,关闭后 # 强制私聊回复 force_reply_private = false # 是否强制私聊回复,开启后私聊将强制回复 +allow_reply_self = false # 是否允许回复自己说的话 + max_context_size = 25 # 上下文长度 thinking_timeout = 40 # MoFox-Bot一次回复最长思考规划时间,超过这个时间的思考会放弃(往往是api反应太慢) replyer_random_probability = 0.5 # 首要replyer模型被选择的概率 diff --git a/test_planner_personality.py b/test_planner_personality.py deleted file mode 100644 index e69de29bb..000000000