oclaw/interfaces/gateway/server_methods/telegram_send_normalize.py
oliver 4a23b715a2 重构仓库目录为统一的 runtime 分层并清理历史 openclaw 残留。
本次迁移将网关/通道/工具/技能/脚本与协议资源集中到新结构,统一路径常量与脚本转发机制,减少顶层噪音并保证运行与测试行为一致。

Made-with: Cursor
2026-04-25 01:24:23 +08:00

41 lines
1.4 KiB
Python

from __future__ import annotations
from typing import Any
from oclaw.runtime.extensions.telegram import (
normalize_telegram_messaging_target,
parse_telegram_reply_to_message_id,
parse_telegram_target,
parse_telegram_thread_id,
)
def normalize_transport_target_for_channel(
*,
channel: str,
to: str,
params: dict[str, Any],
) -> tuple[str, dict[str, Any]]:
"""Normalize channel transport target payload for outbound paths."""
extra: dict[str, Any] = {}
if channel != "telegram":
return to, extra
normalized_target = normalize_telegram_messaging_target(to)
parsed_target = parse_telegram_target(normalized_target or to)
normalized_to = normalized_target or f"telegram:{parsed_target.chat_id}".lower()
reply_to_id = parse_telegram_reply_to_message_id(params.get("replyToId"))
thread_id = parse_telegram_thread_id(
params.get("threadId") if params.get("threadId") is not None else parsed_target.message_thread_id
)
extra = {
"target": {
"chatId": parsed_target.chat_id,
"chatType": parsed_target.chat_type,
**({"messageThreadId": parsed_target.message_thread_id} if parsed_target.message_thread_id is not None else {}),
},
**({"threadId": thread_id} if thread_id is not None else {}),
**({"replyToMessageId": reply_to_id} if reply_to_id is not None else {}),
}
return normalized_to, extra