diff --git a/src/plugins/chat/config.py b/src/plugins/chat/config.py index 7890b8000..c027753c0 100644 --- a/src/plugins/chat/config.py +++ b/src/plugins/chat/config.py @@ -70,6 +70,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=[ "曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧", @@ -283,6 +289,14 @@ class BotConfig: if keywords_reaction_config.get("enable", False): config.keywords_reaction_rules = keywords_reaction_config.get("rules", config.keywords_reaction_rules) + def chinese_typo(parent: dict): + chinese_typo_config = parent["chinese_typo"] + config.chinese_typo_enable = chinese_typo_config.get("enable", config.chinese_typo_enable) + config.chinese_typo_error_rate = chinese_typo_config.get("error_rate", config.chinese_typo_error_rate) + config.chinese_typo_min_freq = chinese_typo_config.get("min_freq", config.chinese_typo_min_freq) + config.chinese_typo_tone_error_rate = chinese_typo_config.get("tone_error_rate", config.chinese_typo_tone_error_rate) + config.chinese_typo_word_replace_rate = chinese_typo_config.get("word_replace_rate", config.chinese_typo_word_replace_rate) + def groups(parent: dict): groups_config = parent["groups"] config.talk_allowed_groups = set(groups_config.get("talk_allowed", [])) @@ -341,6 +355,11 @@ class BotConfig: "support": ">=0.0.2", "necessary": False }, + "chinese_typo": { + "func": chinese_typo, + "support": ">=0.0.3", + "necessary": False + }, "groups": { "func": groups, "support": ">=0.0.0" diff --git a/src/plugins/chat/utils.py b/src/plugins/chat/utils.py index d079a2eb7..d166bcd27 100644 --- a/src/plugins/chat/utils.py +++ b/src/plugins/chat/utils.py @@ -332,18 +332,21 @@ def process_llm_response(text: str) -> List[str]: return ['懒得说'] # 处理长消息 typo_generator = ChineseTypoGenerator( - error_rate=0.03, - min_freq=7, - tone_error_rate=0.2, - word_replace_rate=0.02 + 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 ) split_sentences = split_into_sentences_w_remove_punctuation(text) sentences = [] for sentence in split_sentences: - typoed_text, typo_corrections = typo_generator.create_typo_sentence(sentence) - sentences.append(typoed_text) - if typo_corrections: - sentences.append(typo_corrections) + if global_config.chinese_typo_enable: + typoed_text, typo_corrections = typo_generator.create_typo_sentence(sentence) + sentences.append(typoed_text) + if typo_corrections: + sentences.append(typo_corrections) + else: + sentences.append(sentence) # 检查分割后的消息数量是否过多(超过3条) if len(sentences) > 5: diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index e0f54a46e..d7c66d3f4 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "0.0.2" +version = "0.0.3" [bot] qq = 123 @@ -67,6 +67,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 # 是否启用读空气功能