Исправление формата сообщений макс.
This commit is contained in:
+30
-6
@@ -29,8 +29,10 @@ class MaxToTelegramBridge:
|
|||||||
logger.debug("Skip duplicated message %s/%s", parsed.chat_id, parsed.message_id)
|
logger.debug("Skip duplicated message %s/%s", parsed.chat_id, parsed.message_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
text = self._format_caption(parsed.sender_name, parsed.chat_name, parsed.text)
|
# Формат зависит от маршрута:
|
||||||
has_any_payload = bool(text.strip()) or bool(parsed.image_urls) or bool(parsed.video_urls)
|
# - если найден целевой Telegram-чат (не fallback): "Ирина:\n<текст>"
|
||||||
|
# - если fallback: "Ирина / Свободный микрофон:\n<текст>"
|
||||||
|
# Решение о том, включать ли название чата, принимаем после определения маршрута.
|
||||||
if not has_any_payload:
|
if not has_any_payload:
|
||||||
logger.debug("Skip empty message %s/%s", parsed.chat_id, parsed.message_id)
|
logger.debug("Skip empty message %s/%s", parsed.chat_id, parsed.message_id)
|
||||||
return
|
return
|
||||||
@@ -39,18 +41,32 @@ class MaxToTelegramBridge:
|
|||||||
routed = self._storage.get_chat_route(max_chat_title_norm=normalized)
|
routed = self._storage.get_chat_route(max_chat_title_norm=normalized)
|
||||||
if routed:
|
if routed:
|
||||||
target_chat_id = routed
|
target_chat_id = routed
|
||||||
|
is_fallback = False
|
||||||
logger.info("Route Max chat '%s' to Telegram chat %s (bound)", parsed.chat_name, target_chat_id)
|
logger.info("Route Max chat '%s' to Telegram chat %s (bound)", parsed.chat_name, target_chat_id)
|
||||||
else:
|
else:
|
||||||
target_chat_id, matched_by_title = await self._telegram.resolve_target_chat_id(parsed.chat_name)
|
target_chat_id, matched_by_title = await self._telegram.resolve_target_chat_id(parsed.chat_name)
|
||||||
if matched_by_title:
|
if matched_by_title:
|
||||||
|
is_fallback = False
|
||||||
logger.info("Route Max chat '%s' to Telegram chat %s", parsed.chat_name, target_chat_id)
|
logger.info("Route Max chat '%s' to Telegram chat %s", parsed.chat_name, target_chat_id)
|
||||||
else:
|
else:
|
||||||
|
is_fallback = True
|
||||||
logger.info(
|
logger.info(
|
||||||
"Telegram chat '%s' not found, route to fallback user %s",
|
"Telegram chat '%s' not found, route to fallback user %s",
|
||||||
parsed.chat_name,
|
parsed.chat_name,
|
||||||
target_chat_id,
|
target_chat_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
text = self._format_caption(
|
||||||
|
sender_name=parsed.sender_name,
|
||||||
|
chat_name=parsed.chat_name,
|
||||||
|
text=parsed.text,
|
||||||
|
include_chat_name=is_fallback,
|
||||||
|
)
|
||||||
|
has_any_payload = bool(text.strip()) or bool(parsed.image_urls) or bool(parsed.video_urls)
|
||||||
|
if not has_any_payload:
|
||||||
|
logger.debug("Skip empty message %s/%s", parsed.chat_id, parsed.message_id)
|
||||||
|
return
|
||||||
|
|
||||||
total_media = len(parsed.image_urls) + len(parsed.video_urls)
|
total_media = len(parsed.image_urls) + len(parsed.video_urls)
|
||||||
if total_media > 1:
|
if total_media > 1:
|
||||||
# Отправляем одним альбомом в Telegram (единое сообщение).
|
# Отправляем одним альбомом в Telegram (единое сообщение).
|
||||||
@@ -95,10 +111,18 @@ class MaxToTelegramBridge:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _format_caption(sender_name: str, chat_name: str, text: str) -> str:
|
def _format_caption(*, sender_name: str, chat_name: str, text: str, include_chat_name: bool) -> str:
|
||||||
header = f"MAX: {sender_name} / {chat_name}"
|
sender_name = (sender_name or "").strip() or "unknown"
|
||||||
if text.strip():
|
chat_name = (chat_name or "").strip() or "direct"
|
||||||
return f"{header}\n\n{text}"
|
|
||||||
|
if include_chat_name:
|
||||||
|
header = f"{sender_name} / {chat_name}:"
|
||||||
|
else:
|
||||||
|
header = f"{sender_name}:"
|
||||||
|
|
||||||
|
body = (text or "").strip()
|
||||||
|
if body:
|
||||||
|
return f"{header}\n{body}"
|
||||||
return header
|
return header
|
||||||
|
|
||||||
async def _enrich_from_max(self, max_message: Any, parsed: ParsedMessage) -> ParsedMessage:
|
async def _enrich_from_max(self, max_message: Any, parsed: ParsedMessage) -> ParsedMessage:
|
||||||
|
|||||||
Reference in New Issue
Block a user