Fix some task quirks

This commit is contained in:
2026-03-08 23:16:15 +00:00
parent acedc01e83
commit a7421b9350
7 changed files with 312 additions and 34 deletions

View File

@@ -16,6 +16,50 @@ SAFE_TASK_FLAGS_DEFAULTS = {
"min_chars": 3,
}
WHATSAPP_GROUP_ID_RE = re.compile(r"^\d+@g\.us$")
WHATSAPP_DIRECT_ID_RE = re.compile(r"^\d+@s\.whatsapp\.net$")
WHATSAPP_BARE_ID_RE = re.compile(r"^\d+$")
SIGNAL_GROUP_ID_RE = re.compile(r"^group\.[A-Za-z0-9+/=]+$")
SIGNAL_UUID_RE = re.compile(
r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
re.IGNORECASE,
)
SIGNAL_PHONE_RE = re.compile(r"^\+\d+$")
SIGNAL_INTERNAL_ID_RE = re.compile(r"^[A-Za-z0-9+/=]+$")
def _normalize_whatsapp_identifier(identifier: str) -> str:
value = str(identifier or "").strip()
if not value:
return ""
if "/" in value or "?" in value or "#" in value:
return ""
if WHATSAPP_GROUP_ID_RE.fullmatch(value):
return value
if WHATSAPP_DIRECT_ID_RE.fullmatch(value):
return value
bare = value.split("@", 1)[0].strip()
if not WHATSAPP_BARE_ID_RE.fullmatch(bare):
return ""
if value.endswith("@s.whatsapp.net"):
return f"{bare}@s.whatsapp.net"
return f"{bare}@g.us"
def _normalize_signal_identifier(identifier: str) -> str:
value = str(identifier or "").strip()
if not value:
return ""
if SIGNAL_GROUP_ID_RE.fullmatch(value):
return value
if SIGNAL_UUID_RE.fullmatch(value):
return value.lower()
if SIGNAL_PHONE_RE.fullmatch(value):
return value
if SIGNAL_INTERNAL_ID_RE.fullmatch(value):
return value
return ""
def normalize_channel_identifier(service: str, identifier: str) -> str:
service_key = str(service or "").strip().lower()
@@ -23,12 +67,9 @@ def normalize_channel_identifier(service: str, identifier: str) -> str:
if not value:
return ""
if service_key == "whatsapp":
bare = value.split("@", 1)[0].strip()
if not bare:
return value
if value.endswith("@s.whatsapp.net"):
return f"{bare}@s.whatsapp.net"
return f"{bare}@g.us"
return _normalize_whatsapp_identifier(value)
if service_key == "signal":
return _normalize_signal_identifier(value)
return value