Implement delay timing
This commit is contained in:
@@ -42,7 +42,9 @@ def _is_internal_compose_blob_url(value: str) -> bool:
|
||||
|
||||
|
||||
def _is_compose_blob_only_text(text_value: str) -> bool:
|
||||
lines = [line.strip() for line in str(text_value or "").splitlines() if line.strip()]
|
||||
lines = [
|
||||
line.strip() for line in str(text_value or "").splitlines() if line.strip()
|
||||
]
|
||||
if not lines:
|
||||
return False
|
||||
return all(_is_internal_compose_blob_url(line) for line in lines)
|
||||
|
||||
@@ -48,7 +48,9 @@ async def download_and_encode_base64(file_url, filename, content_type, session=N
|
||||
return None
|
||||
file_data = await response.read()
|
||||
base64_encoded = base64.b64encode(file_data).decode("utf-8")
|
||||
return f"data:{content_type};filename={filename};base64,{base64_encoded}"
|
||||
return (
|
||||
f"data:{content_type};filename={filename};base64,{base64_encoded}"
|
||||
)
|
||||
|
||||
async with aiohttp.ClientSession() as local_session:
|
||||
async with local_session.get(file_url, timeout=10) as response:
|
||||
@@ -104,7 +106,9 @@ async def send_message_raw(recipient_uuid, text=None, attachments=None):
|
||||
file_url = row.get("url")
|
||||
if not file_url:
|
||||
return None
|
||||
return await download_and_encode_base64(file_url, filename, content_type, session)
|
||||
return await download_and_encode_base64(
|
||||
file_url, filename, content_type, session
|
||||
)
|
||||
|
||||
# Asynchronously resolve and encode all attachments
|
||||
attachments = attachments or []
|
||||
|
||||
@@ -2168,9 +2168,8 @@ class WhatsAppClient(ClientBase):
|
||||
if not isinstance(payload, (bytes, bytearray)):
|
||||
return []
|
||||
|
||||
filename = (
|
||||
self._pluck(msg_obj, "documentMessage", "fileName")
|
||||
or self._pluck(msg_obj, "document_message", "file_name")
|
||||
filename = self._pluck(msg_obj, "documentMessage", "fileName") or self._pluck(
|
||||
msg_obj, "document_message", "file_name"
|
||||
)
|
||||
content_type = (
|
||||
self._pluck(msg_obj, "documentMessage", "mimetype")
|
||||
@@ -2184,7 +2183,9 @@ class WhatsAppClient(ClientBase):
|
||||
or self._infer_media_content_type(msg_obj)
|
||||
)
|
||||
if not filename:
|
||||
ext = mimetypes.guess_extension(str(content_type or "").split(";", 1)[0].strip().lower())
|
||||
ext = mimetypes.guess_extension(
|
||||
str(content_type or "").split(";", 1)[0].strip().lower()
|
||||
)
|
||||
filename = f"wa-{int(time.time())}{ext or '.bin'}"
|
||||
blob_key = media_bridge.put_blob(
|
||||
service="whatsapp",
|
||||
@@ -2749,7 +2750,9 @@ class WhatsAppClient(ClientBase):
|
||||
"whatsapp media send ok: method=%s filename=%s ts=%s",
|
||||
send_method,
|
||||
filename,
|
||||
self._normalize_timestamp(self._pluck(response, "Timestamp") or 0),
|
||||
self._normalize_timestamp(
|
||||
self._pluck(response, "Timestamp") or 0
|
||||
),
|
||||
)
|
||||
except Exception as exc:
|
||||
self.log.warning("whatsapp attachment send failed: %s", exc)
|
||||
@@ -2984,7 +2987,9 @@ class WhatsAppClient(ClientBase):
|
||||
]
|
||||
for args in attempts:
|
||||
try:
|
||||
response = await self._call_client_method(method, *args, timeout=9.0)
|
||||
response = await self._call_client_method(
|
||||
method, *args, timeout=9.0
|
||||
)
|
||||
if response is not None:
|
||||
self.log.debug(
|
||||
"reaction-bridge whatsapp-send ok method=%s args_len=%s",
|
||||
|
||||
@@ -1188,7 +1188,9 @@ class XMPPComponent(ComponentXMPP):
|
||||
recipient_service,
|
||||
identifier.identifier,
|
||||
emoji=str(reaction_payload.get("emoji") or ""),
|
||||
target_message_id=str((bridge or {}).get("upstream_message_id") or ""),
|
||||
target_message_id=str(
|
||||
(bridge or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
target_timestamp=int((bridge or {}).get("upstream_ts") or 0),
|
||||
target_author=str((bridge or {}).get("upstream_author") or ""),
|
||||
remove=bool(reaction_payload.get("remove")),
|
||||
@@ -1542,7 +1544,9 @@ class XMPPComponent(ComponentXMPP):
|
||||
service=person_identifier.service,
|
||||
xmpp_message_id=xmpp_id,
|
||||
xmpp_ts=int(time.time() * 1000),
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
text_preview=str(text or ""),
|
||||
@@ -1553,9 +1557,13 @@ class XMPPComponent(ComponentXMPP):
|
||||
identifier=person_identifier,
|
||||
source_service=person_identifier.service,
|
||||
local_message_id=str((source_ref or {}).get("legacy_message_id") or ""),
|
||||
local_ts=int((source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)),
|
||||
local_ts=int(
|
||||
(source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)
|
||||
),
|
||||
xmpp_message_id=xmpp_id,
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
)
|
||||
@@ -1569,7 +1577,9 @@ class XMPPComponent(ComponentXMPP):
|
||||
service=person_identifier.service,
|
||||
xmpp_message_id=xmpp_id,
|
||||
xmpp_ts=int(time.time() * 1000),
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
text_preview=str(text or ""),
|
||||
@@ -1580,9 +1590,13 @@ class XMPPComponent(ComponentXMPP):
|
||||
identifier=person_identifier,
|
||||
source_service=person_identifier.service,
|
||||
local_message_id=str((source_ref or {}).get("legacy_message_id") or ""),
|
||||
local_ts=int((source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)),
|
||||
local_ts=int(
|
||||
(source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)
|
||||
),
|
||||
xmpp_message_id=xmpp_id,
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
)
|
||||
@@ -1611,7 +1625,9 @@ class XMPPComponent(ComponentXMPP):
|
||||
service=person_identifier.service,
|
||||
xmpp_message_id=str(row.get("xmpp_message_id") or "").strip(),
|
||||
xmpp_ts=int(time.time() * 1000),
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
text_preview=str(row.get("url") or text or ""),
|
||||
@@ -1622,13 +1638,21 @@ class XMPPComponent(ComponentXMPP):
|
||||
identifier=person_identifier,
|
||||
source_service=person_identifier.service,
|
||||
local_message_id=str((source_ref or {}).get("legacy_message_id") or ""),
|
||||
local_ts=int((source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)),
|
||||
local_ts=int(
|
||||
(source_ref or {}).get("xmpp_source_ts") or int(time.time() * 1000)
|
||||
),
|
||||
xmpp_message_id=str(row.get("xmpp_message_id") or "").strip(),
|
||||
upstream_message_id=str((source_ref or {}).get("upstream_message_id") or ""),
|
||||
upstream_message_id=str(
|
||||
(source_ref or {}).get("upstream_message_id") or ""
|
||||
),
|
||||
upstream_author=str((source_ref or {}).get("upstream_author") or ""),
|
||||
upstream_ts=int((source_ref or {}).get("upstream_ts") or 0),
|
||||
)
|
||||
return [str(row.get("url") or "").strip() for row in normalized_rows if str(row.get("url") or "").strip()]
|
||||
return [
|
||||
str(row.get("url") or "").strip()
|
||||
for row in normalized_rows
|
||||
if str(row.get("url") or "").strip()
|
||||
]
|
||||
|
||||
|
||||
class XMPPClient(ClientBase):
|
||||
|
||||
Reference in New Issue
Block a user