fix:优化聊天流信息的展示和检索,优化chat_prompt无效的问题,优化部分群定义问题

This commit is contained in:
SengokuCola
2026-05-07 18:06:55 +08:00
parent 93cef02d92
commit b6808d4b73
21 changed files with 1219 additions and 165 deletions

View File

@@ -0,0 +1,89 @@
from types import SimpleNamespace
from src.chat.message_receive.chat_manager import chat_manager
from src.common.utils.utils_config import ChatConfigUtils, ExpressionConfigUtils
from src.common.utils.utils_session import SessionUtils
from src.config.config import global_config
def test_get_chat_prompt_for_chat_merges_multiple_matching_prompts(monkeypatch):
session_id = SessionUtils.calculate_session_id("qq", group_id="1036092828")
monkeypatch.setattr(
global_config.chat,
"chat_prompts",
[
{"platform": "qq", "item_id": "1036092828", "rule_type": "group", "prompt": "你也是群管理员,可以适当进行管理"},
{"platform": "qq", "item_id": "1036092828", "rule_type": "group", "prompt": "这个群是技术实验群,请你专心讨论技术"},
{"platform": "qq", "item_id": "other", "rule_type": "group", "prompt": "不应该生效"},
],
)
monkeypatch.setattr(chat_manager, "get_session_by_session_id", lambda _session_id: None)
result = ChatConfigUtils.get_chat_prompt_for_chat(session_id, True)
assert result == "你也是群管理员,可以适当进行管理\n这个群是技术实验群,请你专心讨论技术"
def test_get_chat_prompt_for_chat_matches_routed_session_by_chat_stream(monkeypatch):
session_id = SessionUtils.calculate_session_id("qq", group_id="1036092828", account_id="bot-a")
monkeypatch.setattr(
global_config.chat,
"chat_prompts",
[
{"platform": "qq", "item_id": "1036092828", "rule_type": "group", "prompt": "路由会话也应该生效"},
],
)
monkeypatch.setattr(
chat_manager,
"get_session_by_session_id",
lambda _session_id: SimpleNamespace(platform="qq", group_id="1036092828", user_id=None),
)
result = ChatConfigUtils.get_chat_prompt_for_chat(session_id, True)
assert result == "路由会话也应该生效"
def test_expression_learning_list_matches_routed_session_by_chat_stream(monkeypatch):
session_id = SessionUtils.calculate_session_id("qq", group_id="1036092828", account_id="bot-a")
monkeypatch.setattr(
global_config.expression,
"learning_list",
[
{
"platform": "qq",
"item_id": "1036092828",
"rule_type": "group",
"use_expression": False,
"enable_learning": False,
"enable_jargon_learning": True,
}
],
)
monkeypatch.setattr(
chat_manager,
"get_session_by_session_id",
lambda _session_id: SimpleNamespace(platform="qq", group_id="1036092828", user_id=None),
)
assert ExpressionConfigUtils.get_expression_config_for_chat(session_id) == (False, False, True)
def test_talk_value_rules_match_routed_session_by_chat_stream(monkeypatch):
session_id = SessionUtils.calculate_session_id("qq", group_id="1036092828", account_id="bot-a")
monkeypatch.setattr(global_config.chat, "talk_value", 0.1)
monkeypatch.setattr(global_config.chat, "enable_talk_value_rules", True)
monkeypatch.setattr(
global_config.chat,
"talk_value_rules",
[
{"platform": "qq", "item_id": "1036092828", "rule_type": "group", "time": "00:00-23:59", "value": 0.7}
],
)
monkeypatch.setattr(
chat_manager,
"get_session_by_session_id",
lambda _session_id: SimpleNamespace(platform="qq", group_id="1036092828", user_id=None),
)
assert ChatConfigUtils.get_talk_value(session_id, True) == 0.7