from __future__ import annotations import re import unicodedata def member_action_shortcut_command(text: str) -> tuple[str, list[str]] | None: normalized = ( unicodedata.normalize("NFKC", text) .replace("\u200b", "") .replace("\ufeff", "") .strip() ) if normalized == "封禁": return "/ban", ["ban"] if normalized == "禁言": return "/mute", ["mute"] if normalized == "警告": return "/warn", ["warn"] if normalized in {"解封", "解禁", "解除封禁"}: return "/unban", ["unban"] if normalized == "解除禁言": return "/unmute", ["unmute"] if normalized in {"删除消息", "删除", "删"}: return "/del", ["del"] duration = re.fullmatch( r"禁言\s*([1-9]\d?)\s*(分钟|分|小时|时|天)", normalized ) if duration: value, raw_unit = duration.groups() unit = { "分钟": "m", "分": "m", "小时": "h", "时": "h", "天": "d", }[raw_unit] time_value = f"{value}{unit}" return f"/tmute {time_value}", ["tmute", time_value] if normalized in {"踢出", "踢", "飞"}: return "/kick", ["kick"] return None