@@ -219,6 +219,27 @@ class RoutingTests(unittest.TestCase):
|
||||
self.assertEqual(len(MODULE.clean_reply("好" * 900)), 900)
|
||||
self.assertEqual(MODULE.FAST_ACKNOWLEDGEMENT, "喵......")
|
||||
|
||||
def test_chat_reply_style_removes_ai_like_padding(self):
|
||||
self.assertEqual(
|
||||
MODULE.clean_chat_reply(
|
||||
"李神是啥我都不清楚,怎么比,总不能凭空给自己打满分吧\n"
|
||||
"反正我就是个会唠嗑的,聊聊天、记记小账还行,"
|
||||
"别的功能想都别想喵"
|
||||
),
|
||||
"李神是啥喵",
|
||||
)
|
||||
self.assertEqual(
|
||||
MODULE.clean_chat_reply("作为AI我无法比较。\n李神是谁?"),
|
||||
"李神是谁喵",
|
||||
)
|
||||
self.assertEqual(
|
||||
MODULE.clean_chat_reply(
|
||||
"这波像是脑子知道要撤,但是手完全没同意,"
|
||||
"而且还顺手把队友也拖下水了。"
|
||||
),
|
||||
"这波像是脑子知道要撤\n但是手完全没同意\n而且还顺手把队友也拖下水了喵",
|
||||
)
|
||||
|
||||
def test_profile_memory_rejects_bare_versions_but_keeps_audio_context(self):
|
||||
self.assertFalse(MODULE.profile_fact_is_safe("5.1"))
|
||||
self.assertTrue(MODULE.profile_fact_is_safe("最近在研究 5.1 音响配置"))
|
||||
@@ -925,9 +946,9 @@ class LedgerAndApplicationTests(unittest.TestCase):
|
||||
self.assertEqual(version["route"], "local")
|
||||
self.assertIn("JWeBot 版本", version["text"])
|
||||
self.assertIn("kernel", version["text"])
|
||||
self.assertIn("最新版本:beta 1.1.2.1019", version["text"])
|
||||
self.assertIn("更新时间:2026-10-19 16:38:10", version["text"])
|
||||
self.assertIn("更新摘要:新增低频主动插话、随机冷门知识问答", version["text"])
|
||||
self.assertIn("最新版本:beta 1.2.0.1019", version["text"])
|
||||
self.assertIn("更新时间:2026-10-19 17:05:47", version["text"])
|
||||
self.assertIn("更新摘要:优化 Taffy 群聊语气", version["text"])
|
||||
self.assertEqual(debug["route"], "local")
|
||||
self.assertIn("调试埋点", debug["text"])
|
||||
self.assertEqual(balance["route"], "local")
|
||||
@@ -2175,6 +2196,10 @@ class DirectClientTests(unittest.TestCase):
|
||||
self.assertNotIn("temperature", payload)
|
||||
self.assertEqual(request.get_header("Authorization"), "Bearer test-key")
|
||||
self.assertIn(MODULE.BOT_IDENTITY_NOTE, payload["messages"][0]["content"])
|
||||
self.assertIn(
|
||||
MODULE.TAFFY_CHAT_STYLE_NOTE,
|
||||
payload["messages"][0]["content"],
|
||||
)
|
||||
self.assertTrue(
|
||||
any(
|
||||
message["content"].startswith("CURRENT_GROUP_SENDER_LABEL:")
|
||||
@@ -2763,6 +2788,23 @@ class CloudRunnerTests(unittest.TestCase):
|
||||
|
||||
self.assertEqual(MODULE.cloud_reply_text(nested), "嵌套内容喵")
|
||||
|
||||
def test_cloud_protocol_applies_chat_reply_style(self):
|
||||
self.assertEqual(
|
||||
MODULE.cloud_reply_text(
|
||||
json.dumps(
|
||||
{
|
||||
"route": "reply",
|
||||
"text": (
|
||||
"李神是啥我都不清楚,怎么比,"
|
||||
"总不能凭空给自己打满分吧"
|
||||
),
|
||||
},
|
||||
ensure_ascii=False,
|
||||
)
|
||||
),
|
||||
"李神是啥喵",
|
||||
)
|
||||
|
||||
def test_cloud_protocol_ignores_a_suffix_after_the_json_object(self):
|
||||
self.assertEqual(
|
||||
MODULE.cloud_reply_text(
|
||||
|
||||
@@ -20,7 +20,7 @@ SPEC.loader.exec_module(MODULE)
|
||||
|
||||
|
||||
class ReleaseUpdateTests(unittest.TestCase):
|
||||
release = "beta 1.1.2.1019"
|
||||
release = "beta 1.2.0.1019"
|
||||
|
||||
def setUp(self):
|
||||
self.temporary = tempfile.TemporaryDirectory()
|
||||
@@ -111,12 +111,15 @@ class ReleaseUpdateTests(unittest.TestCase):
|
||||
self.assertEqual(summary, "第一行更新摘要, 同一条摘要可以换行。")
|
||||
announcement = MODULE.build_announcement(self.release, summary)
|
||||
self.assertIn(f"{self.release} 更新现已完成", announcement)
|
||||
self.assertIn("更新补偿:摩拉 x200", announcement)
|
||||
self.assertNotIn("原石 x1", announcement)
|
||||
self.assertIn("更新补偿:摩拉 x200,原石 x1", announcement)
|
||||
self.assertNotIn("第二条", announcement)
|
||||
|
||||
def test_policy_release_announces_primogem(self):
|
||||
for release in ("beta 1.0.5.1016", "beta 1.1.0.1016"):
|
||||
for release in (
|
||||
"beta 1.0.5.1016",
|
||||
"beta 1.1.0.1016",
|
||||
"beta 1.2.0.1019",
|
||||
):
|
||||
self.assertEqual(MODULE.primogem_compensation_amount(release), 1)
|
||||
announcement = MODULE.build_announcement(release, "原石系统上线。")
|
||||
self.assertIn("更新补偿:摩拉 x200,原石 x1", announcement)
|
||||
@@ -184,7 +187,7 @@ class ReleaseUpdateTests(unittest.TestCase):
|
||||
self.assertIn("更新摩拉账户并修复重复回复问题", delivered[0][2])
|
||||
self.assertEqual([state["balance"] for state in self.account_states()], [1200, 250])
|
||||
for state in self.account_states():
|
||||
self.assertEqual(state["primogems"], 0)
|
||||
self.assertEqual(state["primogems"], 1)
|
||||
matches = [
|
||||
event
|
||||
for event in state["coin_events"]
|
||||
@@ -198,7 +201,9 @@ class ReleaseUpdateTests(unittest.TestCase):
|
||||
for event in state["primogem_events"]
|
||||
if event["reason"] == f"{self.release} 版本更新补偿"
|
||||
]
|
||||
self.assertEqual(primogem_matches, [])
|
||||
self.assertEqual(len(primogem_matches), 1)
|
||||
self.assertEqual(primogem_matches[0]["delta"], 1)
|
||||
self.assertEqual(primogem_matches[0]["created_at"], applied_at.timestamp())
|
||||
self.assertEqual(self.announcement_marker()["state"], "delivered")
|
||||
self.assertEqual(len(list(self.backups.glob("*.sqlite3"))), 1)
|
||||
|
||||
@@ -216,7 +221,7 @@ class ReleaseUpdateTests(unittest.TestCase):
|
||||
deliverer=uncertain,
|
||||
)
|
||||
self.assertEqual([state["balance"] for state in self.account_states()], [1200, 250])
|
||||
self.assertEqual([state["primogems"] for state in self.account_states()], [0, 0])
|
||||
self.assertEqual([state["primogems"] for state in self.account_states()], [1, 1])
|
||||
self.assertEqual(self.announcement_marker()["state"], "uncertain")
|
||||
|
||||
called = []
|
||||
@@ -247,7 +252,7 @@ class ReleaseUpdateTests(unittest.TestCase):
|
||||
self.assertEqual(result["compensation"], "already_applied")
|
||||
self.assertEqual(len(called), 1)
|
||||
self.assertEqual([state["balance"] for state in self.account_states()], [1200, 250])
|
||||
self.assertEqual([state["primogems"] for state in self.account_states()], [0, 0])
|
||||
self.assertEqual([state["primogems"] for state in self.account_states()], [1, 1])
|
||||
self.assertEqual(self.announcement_marker()["state"], "delivered")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user