diff --git a/konabot/plugins/celeste_classic/__init__.py b/konabot/plugins/celeste_classic/__init__.py index 2713405..c00ae89 100644 --- a/konabot/plugins/celeste_classic/__init__.py +++ b/konabot/plugins/celeste_classic/__init__.py @@ -1,6 +1,7 @@ from pathlib import Path import subprocess import tempfile +from typing import Any from loguru import logger from nonebot import on_command from pydantic import BaseModel @@ -41,7 +42,12 @@ class CelesteStatus(BaseModel): celeste_status = DataManager(CelesteStatus, DATA_PATH / "celeste-status.json") -cmd = on_command(cmd="celeste", aliases={"蔚蓝", "爬山", "鳌太线"}) +# ↓ 这里的 Type Hinting 是为了能 fit 进去 set[str | tuple[str, ...]] +aliases: set[Any] = {"蔚蓝", "爬山", "鳌太线"} +ALLOW_CHARS = "wasdxc0123456789 \t\n\r" + + +cmd = on_command(cmd="celeste", aliases=aliases) @cmd.handle() @@ -57,11 +63,13 @@ async def _(msg: UniMsg, evt: Event, bot: Bot): prev = f"QQ:{bot.self_id}:" + str(msgid) actions = msg.extract_plain_text().strip().removeprefix("celeste") - for alias in {"蔚蓝", "爬山", "鳌太线"}: + for alias in aliases: actions = actions.removeprefix(alias) actions = actions.strip() if len(actions) == 0: return + if any((c not in ALLOW_CHARS) for c in actions): + return if prev is not None: async with celeste_status.get_data() as data: