fix(chat): 防止机器人回复自身消息
添加配置选项 `allow_reply_self` 控制是否允许机器人回复自己发送的消息 当此选项为 false 时,在回复动作执行前检查目标用户 ID,如果是机器人自身则跳过回复 同时删除无用的测试文件 `test_planner_personality.py
This commit is contained in:
@@ -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}")
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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模型被选择的概率
|
||||||
|
|||||||
Reference in New Issue
Block a user