diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 2b0492de..180cce56 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -66,6 +66,12 @@ class BotConfig: keywords_reaction_rules = [] # 关键词回复规则 + chinese_typo_enable=True # 是否启用中文错别字生成器 + chinese_typo_error_rate=0.03 # 单字替换概率 + chinese_typo_min_freq=7 # 最小字频阈值 + chinese_typo_tone_error_rate=0.2 # 声调错误概率 + chinese_typo_word_replace_rate=0.02 # 整词替换概率 + # 默认人设 PROMPT_PERSONALITY=[ "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", @@ -203,6 +209,15 @@ class BotConfig: if keywords_reaction_config.get("enable", False): config.keywords_reaction_rules = keywords_reaction_config.get("rules", config.keywords_reaction_rules) + if "chinese_typo_generator" in toml_dict: + # 读取中文错别字生成器配置 + chinese_typo_generator_config = toml_dict["chinese_typo_generator"] + config.chinese_typo_enable = chinese_typo_generator_config.get("enable", config.chinese_typo_enable) + config.chinese_typo_error_rate = chinese_typo_generator_config.get("error_rate", config.chinese_typo_error_rate) + config.chinese_typo_min_freq = chinese_typo_generator_config.get("min_freq", config.chinese_typo_min_freq) + config.chinese_typo_tone_error_rate = chinese_typo_generator_config.get("tone_error_rate", config.chinese_typo_tone_error_rate) + config.chinese_typo_word_replace_rate = chinese_typo_generator_config.get("word_replace_rate", config.chinese_typo_word_replace_rate) + # 群组配置 if "groups" in toml_dict: groups_config = toml_dict["groups"] diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index b2583e86..e0e06118 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -330,13 +330,16 @@ def process_llm_response(text: str) -> List[str]: print(f"回复过长 ({len(text)} 字符),返回默认回复") return ['懒得说'] # 处理长消息 - typo_generator = ChineseTypoGenerator( - error_rate=0.03, - min_freq=7, - tone_error_rate=0.2, - word_replace_rate=0.02 - ) - typoed_text = typo_generator.create_typo_sentence(text)[0] + if global_config.chinese_typo_enable: + typo_generator = ChineseTypoGenerator( + error_rate=global_config.chinese_typo_error_rate, + min_freq=global_config.chinese_typo_min_freq, + tone_error_rate=global_config.chinese_typo_tone_error_rate, + word_replace_rate=global_config.chinese_typo_word_replace_rate + ) + typoed_text = typo_generator.create_typo_sentence(text)[0] + else: + typoed_text = text sentences = split_into_sentences_w_remove_punctuation(typoed_text) # 检查分割后的消息数量是否过多(超过3条) if len(sentences) > 4: diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index 4f357dec..9709ebbd 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -64,6 +64,13 @@ enable = false # 仅作示例,不会触发 keywords = ["测试关键词回复","test",""] reaction = "回答“测试成功”" +[chinese_typo] +enable = true # 是否启用中文错别字生成器 +error_rate=0.03 # 单字替换概率 +min_freq=7 # 最小字频阈值 +tone_error_rate=0.2 # 声调错误概率 +word_replace_rate=0.02 # 整词替换概率 + [others] enable_advance_output = true # 是否启用高级输出 enable_kuuki_read = true # 是否启用读空气功能