优化自动每日指令与扫码退出秘境
This commit is contained in:
+89
-11
@@ -251,6 +251,72 @@ COMMAND_ALLOWED_ROLE_DEFAULTS = {
|
||||
"queue_list": ALL_DANMU_ROLES,
|
||||
"help": ALL_DANMU_ROLES,
|
||||
}
|
||||
NEW_COMMAND_ALIAS_DEFAULTS = {
|
||||
"daily": ["自动每日", "每日", "日常", "做每日", "做日常"],
|
||||
"switch_party": ["切换队伍", "更换队伍", "换队伍", "换队"],
|
||||
"edit_party": ["修改队员", "更换队员", "换队员", "换角色"],
|
||||
}
|
||||
NEW_COMMAND_PREFERRED_ALIASES = {
|
||||
"daily": "每日",
|
||||
"switch_party": "换队",
|
||||
"edit_party": "换角色",
|
||||
}
|
||||
FRONTEND_COMMAND_HINT_KEYS = tuple(NEW_COMMAND_ALIAS_DEFAULTS)
|
||||
|
||||
|
||||
def configured_command_aliases(
|
||||
config_data: dict[str, Any],
|
||||
command_key: str,
|
||||
fallback: list[str] | tuple[str, ...] = (),
|
||||
) -> list[str]:
|
||||
commands = config_data.get("commands", {})
|
||||
cfg = commands.get(command_key, {}) if isinstance(commands, dict) else {}
|
||||
if not isinstance(cfg, dict) or not cfg.get("enabled", True):
|
||||
return []
|
||||
source = cfg.get("aliases")
|
||||
if not isinstance(source, list):
|
||||
source = list(fallback)
|
||||
aliases: list[str] = []
|
||||
for item in source:
|
||||
alias = str(item).strip()
|
||||
if alias and alias not in aliases:
|
||||
aliases.append(alias)
|
||||
return aliases
|
||||
|
||||
|
||||
def preferred_command_alias(
|
||||
config_data: dict[str, Any],
|
||||
command_key: str,
|
||||
fallback: str,
|
||||
) -> str:
|
||||
aliases = configured_command_aliases(config_data, command_key, (fallback,))
|
||||
preferred = NEW_COMMAND_PREFERRED_ALIASES.get(command_key, "")
|
||||
if preferred in aliases:
|
||||
return preferred
|
||||
return min(aliases, key=len) if aliases else fallback
|
||||
|
||||
|
||||
def build_public_command_hints(config_data: dict[str, Any]) -> dict[str, dict[str, Any]]:
|
||||
commands = config_data.get("commands", {})
|
||||
hints: dict[str, dict[str, Any]] = {}
|
||||
for command_key in FRONTEND_COMMAND_HINT_KEYS:
|
||||
cfg = commands.get(command_key, {}) if isinstance(commands, dict) else {}
|
||||
enabled = isinstance(cfg, dict) and bool(cfg.get("enabled", True))
|
||||
aliases = configured_command_aliases(
|
||||
config_data,
|
||||
command_key,
|
||||
NEW_COMMAND_ALIAS_DEFAULTS[command_key],
|
||||
)
|
||||
hints[command_key] = {
|
||||
"enabled": enabled,
|
||||
"aliases": aliases,
|
||||
"preferred_alias": preferred_command_alias(
|
||||
config_data,
|
||||
command_key,
|
||||
NEW_COMMAND_PREFERRED_ALIASES[command_key],
|
||||
) if aliases else "",
|
||||
}
|
||||
return hints
|
||||
|
||||
|
||||
def normalize_allowed_roles(value: Any, default: list[str]) -> list[str]:
|
||||
@@ -628,9 +694,9 @@ class Config:
|
||||
"confirm_yes": {"enabled": True, "aliases": ["是"]},
|
||||
"confirm_no": {"enabled": True, "aliases": ["不是"]},
|
||||
"run": {"enabled": True, "aliases": ["执行", "跑", "开始"]},
|
||||
"daily": {"enabled": True, "aliases": ["自动每日"]},
|
||||
"switch_party": {"enabled": True, "aliases": ["切换队伍", "更换队伍"]},
|
||||
"edit_party": {"enabled": True, "aliases": ["修改队员", "更换队员"]},
|
||||
"daily": {"enabled": True, "aliases": list(NEW_COMMAND_ALIAS_DEFAULTS["daily"])},
|
||||
"switch_party": {"enabled": True, "aliases": list(NEW_COMMAND_ALIAS_DEFAULTS["switch_party"])},
|
||||
"edit_party": {"enabled": True, "aliases": list(NEW_COMMAND_ALIAS_DEFAULTS["edit_party"])},
|
||||
"leave": {"enabled": True, "aliases": ["退出", "退出排队", "取消排队"]},
|
||||
"reset": {"enabled": True, "aliases": ["重置"]},
|
||||
"points": {"enabled": True, "aliases": ["积分"]},
|
||||
@@ -5817,7 +5883,22 @@ class CommandHandler:
|
||||
if answer == "是":
|
||||
self.queue_mgr.set_login_status("logged_in")
|
||||
self.logger.info(f"[登录确认] {uname}({uid}) 确认账号正确,升为二级")
|
||||
await self.broadcast(f"「{uname}」账号已确认,发送\"执行 组名\"开始(如: 执行 泡泡桔)")
|
||||
daily_alias = preferred_command_alias(self.config.data, "daily", "自动每日")
|
||||
switch_alias = preferred_command_alias(self.config.data, "switch_party", "切换队伍")
|
||||
edit_alias = preferred_command_alias(self.config.data, "edit_party", "修改队员")
|
||||
run_aliases = configured_command_aliases(self.config.data, "run", ("执行",))
|
||||
run_alias = run_aliases[0] if run_aliases else "执行"
|
||||
await self.broadcast(
|
||||
f"「{uname}」账号已确认,可发送“{daily_alias}”完成基础每日",
|
||||
tts=True,
|
||||
)
|
||||
await self.broadcast(
|
||||
f"其他模式:{daily_alias} 秘境 风本 / {daily_alias} 地脉 经验 蒙德 / "
|
||||
f"{daily_alias} 委托;{switch_alias} 永冻队 / {edit_alias} 四名角色;"
|
||||
f"普通任务仍发送“{run_alias} 组名”",
|
||||
tts=False,
|
||||
danmu=True,
|
||||
)
|
||||
return
|
||||
self.logger.info(f"[登录确认] {uname}({uid}) 确认不是本人账号,重新扫码上号")
|
||||
await self.broadcast(f"「{uname}」账号不正确,正在关闭当前账号并重新扫码上号", tts=True)
|
||||
@@ -6536,12 +6617,8 @@ class CommandHandler:
|
||||
|
||||
def _get_cmd_aliases_str(self, key: str, fallback: str = "") -> str:
|
||||
"""获取指令的别名展示字符串,用于帮助信息。"""
|
||||
cmds = self.config.data.get("commands", {})
|
||||
cfg = cmds.get(key, {})
|
||||
if cfg.get("enabled", True):
|
||||
aliases = cfg.get("aliases", [])
|
||||
return "/".join(str(a).strip() for a in aliases if str(a).strip())
|
||||
return fallback
|
||||
aliases = configured_command_aliases(self.config.data, key, (fallback,))
|
||||
return "/".join(aliases) if aliases else fallback
|
||||
|
||||
async def _cmd_help(self, uid: int, uname: str):
|
||||
q = self._get_cmd_aliases_str("queue", "排队")
|
||||
@@ -10082,7 +10159,7 @@ class WebServer:
|
||||
return web.Response(status=404, text="no upload")
|
||||
|
||||
async def _api_frontend_config(self, request):
|
||||
"""返回前台视觉配置。"""
|
||||
"""返回前台视觉配置和可公开展示的指令提示。"""
|
||||
cfg = self.config.data.setdefault("frontend", {})
|
||||
return web.json_response({
|
||||
"background_image": cfg.get("background_image", ""),
|
||||
@@ -10090,6 +10167,7 @@ class WebServer:
|
||||
"background_blur": float(cfg.get("background_blur", 0)),
|
||||
"background_fit": cfg.get("background_fit", "cover"),
|
||||
"theme": cfg.get("theme", "classic"),
|
||||
"command_hints": build_public_command_hints(self.config.data),
|
||||
})
|
||||
|
||||
async def _api_music_monitor_config(self, request):
|
||||
|
||||
Reference in New Issue
Block a user