member_shortcuts.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import annotations
  2. import re
  3. import unicodedata
  4. def member_action_shortcut_command(text: str) -> tuple[str, list[str]] | None:
  5. normalized = (
  6. unicodedata.normalize("NFKC", text)
  7. .replace("\u200b", "")
  8. .replace("\ufeff", "")
  9. .strip()
  10. )
  11. if normalized == "封禁":
  12. return "/ban", ["ban"]
  13. if normalized == "禁言":
  14. return "/mute", ["mute"]
  15. if normalized == "警告":
  16. return "/warn", ["warn"]
  17. if normalized in {"解封", "解禁", "解除封禁"}:
  18. return "/unban", ["unban"]
  19. if normalized == "解除禁言":
  20. return "/unmute", ["unmute"]
  21. if normalized in {"删除消息", "删除", "删"}:
  22. return "/del", ["del"]
  23. duration = re.fullmatch(
  24. r"禁言\s*([1-9]\d?)\s*(分钟|分|小时|时|天)", normalized
  25. )
  26. if duration:
  27. value, raw_unit = duration.groups()
  28. unit = {
  29. "分钟": "m",
  30. "分": "m",
  31. "小时": "h",
  32. "时": "h",
  33. "天": "d",
  34. }[raw_unit]
  35. time_value = f"{value}{unit}"
  36. return f"/tmute {time_value}", ["tmute", time_value]
  37. if normalized in {"踢出", "踢", "飞"}:
  38. return "/kick", ["kick"]
  39. return None