| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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
|