diff --git a/src/config/config.py b/src/config/config.py index 9b4386e7d..f5be7ec68 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -268,6 +268,7 @@ class BotConfig: # experimental enable_friend_chat: bool = False # 是否启用好友聊天 # enable_think_flow: bool = False # 是否启用思考流程 + talk_allowed_private = set() enable_pfc_chatting: bool = False # 是否启用PFC聊天 # 模型配置 @@ -651,6 +652,7 @@ class BotConfig: experimental_config = parent["experimental"] config.enable_friend_chat = experimental_config.get("enable_friend_chat", config.enable_friend_chat) # config.enable_think_flow = experimental_config.get("enable_think_flow", config.enable_think_flow) + config.talk_allowed_private = set(str(user) for user in experimental_config.get("talk_allowed_private", [])) if config.INNER_VERSION in SpecifierSet(">=1.1.0"): config.enable_pfc_chatting = experimental_config.get("pfc_chatting", config.enable_pfc_chatting) diff --git a/src/plugins/chat/bot.py b/src/plugins/chat/bot.py index 89e171ba6..dd65ca1cd 100644 --- a/src/plugins/chat/bot.py +++ b/src/plugins/chat/bot.py @@ -82,6 +82,14 @@ class ChatBot: if userinfo.user_id in global_config.ban_user_id: logger.debug(f"用户{userinfo.user_id}被禁止回复") return + + if groupinfo is None: + logger.trace("检测到私聊消息,检查") + # 好友黑名单拦截 + if userinfo.user_id not in global_config.talk_allowed_private: + logger.debug(f"用户{userinfo.user_id}没有私聊权限") + return + # 群聊黑名单拦截 if groupinfo is not None and groupinfo.group_id not in global_config.talk_allowed_groups: diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index c924d35ab..5f215009f 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "1.6.0" +version = "1.6.1" #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- #如果你想要修改配置文件,请在修改后将version的值进行变更 @@ -186,6 +186,7 @@ enable = true [experimental] #实验性功能 enable_friend_chat = false # 是否启用好友聊天 +talk_allowed_private = [] # 可以回复消息的QQ号 pfc_chatting = false # 是否启用PFC聊天,该功能仅作用于私聊,与回复模式独立 #下面的模型若使用硅基流动则不需要更改,使用ds官方则改成.env自定义的宏,使用自定义模型则选择定位相似的模型自己填写