功能:配置可以单独调整各聊天群聊的回复权重

pull/345/head
Oct-autumn 2025-03-13 21:00:08 +08:00
parent 5ae32a965a
commit 4642e79999
No known key found for this signature in database
GPG Key ID: 53C510DF2E6149E8
7 changed files with 54 additions and 59 deletions

View File

@ -146,8 +146,7 @@ enable_check = false # 是否要检查表情包是不是合适的喵
check_prompt = "符合公序良俗" # 检查表情包的标准呢 check_prompt = "符合公序良俗" # 检查表情包的标准呢
[groups] [groups]
talk_allowed = [123456, 789012] # 比如让机器人在群123456和789012里说话 talk_allowed = { 123456 = 1.5, 789012 = 1.0, 345678 = 0.5 } # 比如让机器人在群123456多说点话789012里正常说话在群345678里少说点话
talk_frequency_down = [345678] # 比如在群345678里少说点话
ban_user_id = [111222] # 比如不回复QQ号为111222的人的消息 ban_user_id = [111222] # 比如不回复QQ号为111222的人的消息
[others] [others]

View File

@ -107,8 +107,7 @@ enable_check = false # 启用表情审核
check_prompt = "符合公序良俗" check_prompt = "符合公序良俗"
[groups] [groups]
talk_allowed = [] # 允许对话的群号 talk_allowed = {} # 允许对话的群号与对应的回复权重
talk_frequency_down = [] # 降低回复频率的群号
ban_user_id = [] # 禁止回复的用户QQ号 ban_user_id = [] # 禁止回复的用户QQ号
[others] [others]

View File

@ -316,8 +316,7 @@ enable_check = false # 启用表情审核
check_prompt = "符合公序良俗" check_prompt = "符合公序良俗"
[groups] [groups]
talk_allowed = [] # 允许对话的群号 talk_allowed = {} # 允许对话的群号与对应的回复权重
talk_frequency_down = [] # 降低回复频率的群号
ban_user_id = [] # 禁止回复的用户QQ号 ban_user_id = [] # 禁止回复的用户QQ号
[others] [others]

View File

@ -117,7 +117,7 @@ class ChatBot:
else: else:
# 白名单设定由nontbot侧完成 # 白名单设定由nontbot侧完成
if event.group_id: if event.group_id:
if event.group_id not in global_config.talk_allowed_groups: if event.group_id not in global_config.talk_allowed_groups.keys():
return return
user_info = UserInfo( user_info = UserInfo(

View File

@ -27,8 +27,7 @@ class BotConfig:
ENABLE_PIC_TRANSLATE: bool = True # 是否启用图片翻译 ENABLE_PIC_TRANSLATE: bool = True # 是否启用图片翻译
talk_allowed_groups = set() talk_allowed_groups = {}
talk_frequency_down_groups = set()
thinking_timeout: int = 100 # 思考时间 thinking_timeout: int = 100 # 思考时间
response_willing_amplifier: float = 1.0 # 回复意愿放大系数 response_willing_amplifier: float = 1.0 # 回复意愿放大系数
@ -330,8 +329,10 @@ class BotConfig:
def groups(parent: dict): def groups(parent: dict):
groups_config = parent["groups"] groups_config = parent["groups"]
config.talk_allowed_groups = set(groups_config.get("talk_allowed", []))
config.talk_frequency_down_groups = set(groups_config.get("talk_frequency_down", [])) # talk_allowed 是一个dict组每个dict包含群id和回复权重talk_allowed_groups是一个dictkey是群idvalue是回复权重
config.talk_allowed_groups = {int(k): v for k, v in groups_config.get("talk_allowed", {}).items()}
config.ban_user_id = set(groups_config.get("ban_user_id", [])) config.ban_user_id = set(groups_config.get("ban_user_id", []))
def others(parent: dict): def others(parent: dict):

View File

@ -182,10 +182,12 @@ class WillingManager:
# 考虑回复意愿的影响 # 考虑回复意愿的影响
reply_probability = base_probability * current_willing reply_probability = base_probability * current_willing
# 检查群组权限(如果是群聊) # 群聊,根据配置调整回复概率
if chat_stream.group_info and config: if chat_stream.group_info and config:
if chat_stream.group_info.group_id in config.talk_frequency_down_groups: if chat_stream.group_info.group_id in config.talk_allowed_groups.keys():
reply_probability = reply_probability / global_config.down_frequency_rate reply_probability = reply_probability * global_config.talk_allowed_groups[chat_stream.group_info.group_id]
else:
reply_probability = 0
# 限制最大回复概率 # 限制最大回复概率
reply_probability = min(reply_probability, 0.75) # 设置最大回复概率为75% reply_probability = min(reply_probability, 0.75) # 设置最大回复概率为75%

View File

@ -1,5 +1,5 @@
[inner] [inner]
version = "0.0.8" version = "0.0.9"
#如果你想要修改配置文件请在修改后将version的值进行变更 #如果你想要修改配置文件请在修改后将version的值进行变更
#如果新增项目请在BotConfig类下新增相应的变量 #如果新增项目请在BotConfig类下新增相应的变量
@ -9,8 +9,8 @@ version = "0.0.8"
#"necessary":False #是否必须 #"necessary":False #是否必须
#} #}
#2.如果你修改的是[]下的项目,例如你新增了[memory]下的 memory_ban_words ,那么请在config.py的 load_config函数中的 memory函数下新增版本判断: #2.如果你修改的是[]下的项目,例如你新增了[memory]下的 memory_ban_words ,那么请在config.py的 load_config函数中的 memory函数下新增版本判断:
# if config.INNER_VERSION in SpecifierSet(">=0.0.2"): # if config.INNER_VERSION in SpecifierSet(">=0.0.2"):
# config.memory_ban_words = set(memory_config.get("memory_ban_words", [])) # config.memory_ban_words = set(memory_config.get("memory_ban_words", []))
[bot] [bot]
qq = 123 qq = 123
@ -21,8 +21,8 @@ alias_names = ["小麦", "阿麦"]
prompt_personality = [ prompt_personality = [
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格 "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", # 贴吧人格
"是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格 "是一个女大学生,你有黑色头发,你会刷小红书", # 小红书人格
"是一个女大学生你会刷b站对ACG文化感兴趣" # b站人格 "是一个女大学生你会刷b站对ACG文化感兴趣", # b站人格
] ]
personality_1_probability = 0.6 # 第一种人格出现概率 personality_1_probability = 0.6 # 第一种人格出现概率
personality_2_probability = 0.3 # 第二种人格出现概率 personality_2_probability = 0.3 # 第二种人格出现概率
personality_3_probability = 0.1 # 第三种人格出现概率请确保三个概率相加等于1 personality_3_probability = 0.1 # 第三种人格出现概率请确保三个概率相加等于1
@ -39,7 +39,7 @@ response_interested_rate_amplifier = 1 # 麦麦回复兴趣度放大系数,听
down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数 down_frequency_rate = 3.5 # 降低回复频率的群组回复意愿降低系数
ban_words = [ ban_words = [
# "403","张三" # "403","张三"
] ]
ban_msgs_regex = [ ban_msgs_regex = [
# 需要过滤的消息原始消息匹配的正则表达式匹配到的消息将被过滤支持CQ码若不了解正则表达式请勿修改 # 需要过滤的消息原始消息匹配的正则表达式匹配到的消息将被过滤支持CQ码若不了解正则表达式请勿修改
@ -92,15 +92,15 @@ reaction = "有人说你是人机或者机器人,否定这一事实,攻击
[[keywords_reaction.rules]] # 就像这样复制 [[keywords_reaction.rules]] # 就像这样复制
enable = false # 仅作示例,不会触发 enable = false # 仅作示例,不会触发
keywords = ["测试关键词回复","test",""] keywords = ["测试关键词回复", "test", ""]
reaction = "回答“测试成功”" reaction = "回答“测试成功”"
[chinese_typo] [chinese_typo]
enable = true # 是否启用中文错别字生成器 enable = true # 是否启用中文错别字生成器
error_rate=0.006 # 单字替换概率 error_rate = 0.006 # 单字替换概率
min_freq=7 # 最小字频阈值 min_freq = 7 # 最小字频阈值
tone_error_rate=0.2 # 声调错误概率 tone_error_rate = 0.2 # 声调错误概率
word_replace_rate=0.006 # 整词替换概率 word_replace_rate = 0.006 # 整词替换概率
[others] [others]
enable_advance_output = true # 是否启用高级输出 enable_advance_output = true # 是否启用高级输出
@ -109,11 +109,7 @@ enable_debug_output = false # 是否启用调试输出
enable_friend_chat = false # 是否启用好友聊天 enable_friend_chat = false # 是否启用好友聊天
[groups] [groups]
talk_allowed = [ talk_allowed = { 123456 = 1.5, 789012 = 1.0, 345678 = 0.5 } # 允许对话的群号与对应的回复权重
123,
123,
] #可以回复消息的群
talk_frequency_down = [] #降低回复频率的群
ban_user_id = [] #禁止回复消息的QQ号 ban_user_id = [] #禁止回复消息的QQ号
@ -179,7 +175,6 @@ name = "Pro/Qwen/Qwen2-VL-7B-Instruct"
provider = "SILICONFLOW" provider = "SILICONFLOW"
#嵌入模型 #嵌入模型
[model.embedding] #嵌入 [model.embedding] #嵌入