fix(chat): 防止机器人回复自身消息

添加配置选项 `allow_reply_self` 控制是否允许机器人回复自己发送的消息
当此选项为 false 时,在回复动作执行前检查目标用户 ID,如果是机器人自身则跳过回复

同时删除无用的测试文件 `test_planner_personality.py
This commit is contained in:
BuildTools
2025-09-11 13:24:53 +08:00
parent 8f65953b9d
commit bb1563afab
4 changed files with 8 additions and 1 deletions

View File

@@ -311,6 +311,10 @@ class CycleProcessor:
if reply_actions: if reply_actions:
logger.info(f"{self.log_prefix} 正在执行文本回复...") logger.info(f"{self.log_prefix} 正在执行文本回复...")
for action in reply_actions: 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) result = await execute_action(action)
if isinstance(result, Exception): if isinstance(result, Exception):
logger.error(f"{self.log_prefix} 回复动作执行异常: {result}") logger.error(f"{self.log_prefix} 回复动作执行异常: {result}")

View File

@@ -73,6 +73,7 @@ class ChatConfig(ValidatedConfigBase):
talk_frequency: float = Field(default=1.0, description="聊天频率") talk_frequency: float = Field(default=1.0, description="聊天频率")
mentioned_bot_inevitable_reply: bool = Field(default=False, description="提到机器人的必然回复") mentioned_bot_inevitable_reply: bool = Field(default=False, description="提到机器人的必然回复")
at_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="聊天频率调整") talk_frequency_adjust: list[list[str]] = Field(default_factory=lambda: [], description="聊天频率调整")
focus_value: float = Field(default=1.0, description="专注值") focus_value: float = Field(default=1.0, description="专注值")
focus_mode_quiet_groups: List[str] = Field( focus_mode_quiet_groups: List[str] = Field(

View File

@@ -1,5 +1,5 @@
[inner] [inner]
version = "6.8.1" version = "6.8.2"
#----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读---- #----以下是给开发人员阅读的如果你只是部署了MoFox-Bot不需要阅读----
#如果你想要修改配置文件请递增version的值 #如果你想要修改配置文件请递增version的值
@@ -123,6 +123,8 @@ enable_breaking_mode = true # 是否启用自动进入breaking模式关闭后
# 强制私聊回复 # 强制私聊回复
force_reply_private = false # 是否强制私聊回复,开启后私聊将强制回复 force_reply_private = false # 是否强制私聊回复,开启后私聊将强制回复
allow_reply_self = false # 是否允许回复自己说的话
max_context_size = 25 # 上下文长度 max_context_size = 25 # 上下文长度
thinking_timeout = 40 # MoFox-Bot一次回复最长思考规划时间超过这个时间的思考会放弃往往是api反应太慢 thinking_timeout = 40 # MoFox-Bot一次回复最长思考规划时间超过这个时间的思考会放弃往往是api反应太慢
replyer_random_probability = 0.5 # 首要replyer模型被选择的概率 replyer_random_probability = 0.5 # 首要replyer模型被选择的概率