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:
|
||||
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}")
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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模型被选择的概率
|
||||
|
||||
Reference in New Issue
Block a user