调整 celeste 过度反应的 bug

This commit is contained in:
2026-02-28 12:42:23 +08:00
parent 94db34037b
commit f9f8ae4e67

View File

@ -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: