优化自动每日指令与扫码退出秘境
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
import json
|
||||
import logging
|
||||
import tempfile
|
||||
import unittest
|
||||
@@ -21,6 +22,8 @@ from app.danmu_queue import (
|
||||
COMMAND_ALLOWED_ROLE_DEFAULTS,
|
||||
BetterGIRunner,
|
||||
CommandHandler,
|
||||
Config,
|
||||
build_public_command_hints,
|
||||
)
|
||||
|
||||
|
||||
@@ -32,14 +35,17 @@ class DailyCommandIntegrationTests(unittest.IsolatedAsyncioTestCase):
|
||||
data={
|
||||
"commands": {
|
||||
"run": {"enabled": True, "aliases": ["执行", "跑"]},
|
||||
"daily": {"enabled": True, "aliases": ["自动每日"]},
|
||||
"daily": {
|
||||
"enabled": True,
|
||||
"aliases": ["自动每日", "每日", "日常", "做每日", "做日常"],
|
||||
},
|
||||
"switch_party": {
|
||||
"enabled": True,
|
||||
"aliases": ["切换队伍", "更换队伍"],
|
||||
"aliases": ["切换队伍", "更换队伍", "换队伍", "换队"],
|
||||
},
|
||||
"edit_party": {
|
||||
"enabled": True,
|
||||
"aliases": ["修改队员", "更换队员"],
|
||||
"aliases": ["修改队员", "更换队员", "换队员", "换角色"],
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -315,6 +321,86 @@ class DailyCommandIntegrationTests(unittest.IsolatedAsyncioTestCase):
|
||||
self.handler._split_command_text("修改队员芙宁娜纳西妲钟离雷电将军"),
|
||||
("修改队员", "芙宁娜纳西妲钟离雷电将军"),
|
||||
)
|
||||
self.assertEqual(
|
||||
self.handler._split_command_text("日常秘境 风本"),
|
||||
("日常", "秘境 风本"),
|
||||
)
|
||||
self.assertEqual(
|
||||
self.handler._split_command_text("换队永冻队"),
|
||||
("换队", "永冻队"),
|
||||
)
|
||||
self.assertEqual(
|
||||
self.handler._split_command_text("换角色芙宁娜纳西妲钟离雷电将军"),
|
||||
("换角色", "芙宁娜纳西妲钟离雷电将军"),
|
||||
)
|
||||
|
||||
def test_longest_new_alias_wins_for_contiguous_arguments(self):
|
||||
self.assertEqual(
|
||||
self.handler._split_command_text("换队员芙宁娜纳西妲钟离雷电将军"),
|
||||
("换队员", "芙宁娜纳西妲钟离雷电将军"),
|
||||
)
|
||||
|
||||
async def test_confirmed_login_announces_daily_and_party_usage(self):
|
||||
self.queue_mgr.state["login_status"] = "confirming"
|
||||
|
||||
await self.handler._cmd_confirm_login(123, "测试用户", "是")
|
||||
|
||||
self.assertEqual(self.broadcaster.broadcast.await_count, 2)
|
||||
first, second = self.broadcaster.broadcast.await_args_list
|
||||
self.assertIn("发送“每日”完成基础每日", first.args[0])
|
||||
self.assertTrue(first.kwargs["tts"])
|
||||
self.assertIn("每日 秘境 风本", second.args[0])
|
||||
self.assertIn("换队 永冻队", second.args[0])
|
||||
self.assertIn("换角色 四名角色", second.args[0])
|
||||
self.assertIn("执行 组名", second.args[0])
|
||||
self.assertFalse(second.kwargs["tts"])
|
||||
self.assertTrue(second.kwargs["danmu"])
|
||||
|
||||
def test_public_command_hints_are_sanitized_and_use_shortest_alias(self):
|
||||
config_data = {
|
||||
"commands": self.config.data["commands"],
|
||||
"bilibili": {"cookie": "secret"},
|
||||
}
|
||||
|
||||
hints = build_public_command_hints(config_data)
|
||||
|
||||
self.assertEqual(set(hints), {"daily", "switch_party", "edit_party"})
|
||||
self.assertEqual(hints["daily"]["preferred_alias"], "每日")
|
||||
self.assertEqual(hints["switch_party"]["preferred_alias"], "换队")
|
||||
self.assertEqual(hints["edit_party"]["preferred_alias"], "换角色")
|
||||
self.assertNotIn("bilibili", hints)
|
||||
|
||||
def test_new_command_alias_defaults_are_complete(self):
|
||||
config_path = self.root / "config.json"
|
||||
config_path.write_text(json.dumps({}), encoding="utf-8")
|
||||
|
||||
config = Config(str(config_path))
|
||||
|
||||
self.assertEqual(
|
||||
config.data["commands"]["daily"]["aliases"],
|
||||
["自动每日", "每日", "日常", "做每日", "做日常"],
|
||||
)
|
||||
self.assertEqual(
|
||||
config.data["commands"]["switch_party"]["aliases"],
|
||||
["切换队伍", "更换队伍", "换队伍", "换队"],
|
||||
)
|
||||
self.assertEqual(
|
||||
config.data["commands"]["edit_party"]["aliases"],
|
||||
["修改队员", "更换队员", "换队员", "换角色"],
|
||||
)
|
||||
|
||||
def test_disabled_command_hint_has_no_public_alias(self):
|
||||
config_data = {
|
||||
"commands": {
|
||||
"daily": {"enabled": False, "aliases": ["每日"]},
|
||||
}
|
||||
}
|
||||
|
||||
hints = build_public_command_hints(config_data)
|
||||
|
||||
self.assertFalse(hints["daily"]["enabled"])
|
||||
self.assertEqual(hints["daily"]["aliases"], [])
|
||||
self.assertEqual(hints["daily"]["preferred_alias"], "")
|
||||
|
||||
def test_new_command_permissions_match_run(self):
|
||||
for key in ("daily", "switch_party", "edit_party"):
|
||||
|
||||
Reference in New Issue
Block a user