From f9f8ae4e675a37eac8f9f517ad06115bd07687a8 Mon Sep 17 00:00:00 2001 From: passthem Date: Sat, 28 Feb 2026 12:42:23 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20celeste=20=E8=BF=87?= =?UTF-8?q?=E5=BA=A6=E5=8F=8D=E5=BA=94=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/celeste_classic/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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: