Добавление реакции пересылки в тг
This commit is contained in:
@@ -33,6 +33,7 @@ class MaxToTelegramBridge:
|
|||||||
# - если найден целевой Telegram-чат (не fallback): "Ирина:\n<текст>"
|
# - если найден целевой Telegram-чат (не fallback): "Ирина:\n<текст>"
|
||||||
# - если fallback: "Ирина / Свободный микрофон:\n<текст>"
|
# - если fallback: "Ирина / Свободный микрофон:\n<текст>"
|
||||||
# Решение о том, включать ли название чата, принимаем после определения маршрута.
|
# Решение о том, включать ли название чата, принимаем после определения маршрута.
|
||||||
|
has_any_payload = bool((parsed.text or "").strip()) or bool(parsed.image_urls) or bool(parsed.video_urls)
|
||||||
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
|
||||||
|
|||||||
@@ -271,6 +271,16 @@ class TelegramToMaxBridge:
|
|||||||
logger.error("Cannot resolve MAX message id after sending media group (chat_id=%s)", max_chat_id)
|
logger.error("Cannot resolve MAX message id after sending media group (chat_id=%s)", max_chat_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Реакция на каждое сообщение альбома в Telegram — best effort.
|
||||||
|
for m in messages:
|
||||||
|
mid = m.get("message_id")
|
||||||
|
if mid is None:
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
await self._telegram.add_reaction(chat_id=telegram_chat_id, message_id=str(mid), emoji="🦄")
|
||||||
|
except Exception:
|
||||||
|
logger.debug("Cannot add Telegram reaction", exc_info=True)
|
||||||
|
|
||||||
for m in messages:
|
for m in messages:
|
||||||
tid = str(m.get("message_id"))
|
tid = str(m.get("message_id"))
|
||||||
if tid:
|
if tid:
|
||||||
@@ -322,6 +332,12 @@ class TelegramToMaxBridge:
|
|||||||
logger.error("Cannot resolve MAX message id after sending (chat_id=%s)", max_chat_id)
|
logger.error("Cannot resolve MAX message id after sending (chat_id=%s)", max_chat_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Реакция в Telegram: best effort.
|
||||||
|
try:
|
||||||
|
await self._telegram.add_reaction(chat_id=telegram_chat_id, message_id=telegram_message_id, emoji="🦄")
|
||||||
|
except Exception:
|
||||||
|
logger.debug("Cannot add Telegram reaction", exc_info=True)
|
||||||
|
|
||||||
self._storage.save_mapping(
|
self._storage.save_mapping(
|
||||||
telegram_chat_id=telegram_chat_id,
|
telegram_chat_id=telegram_chat_id,
|
||||||
telegram_message_id=telegram_message_id,
|
telegram_message_id=telegram_message_id,
|
||||||
|
|||||||
@@ -120,6 +120,17 @@ class TelegramClient:
|
|||||||
raise TelegramApiError(f"Telegram getFile: missing file_path {data}")
|
raise TelegramApiError(f"Telegram getFile: missing file_path {data}")
|
||||||
return f"{self._file_base_url}/{file_path}"
|
return f"{self._file_base_url}/{file_path}"
|
||||||
|
|
||||||
|
async def add_reaction(self, *, chat_id: str, message_id: str, emoji: str) -> None:
|
||||||
|
# setMessageReaction доступен не везде/не всегда; ошибки реакции не должны ломать бридж
|
||||||
|
await self._request(
|
||||||
|
"setMessageReaction",
|
||||||
|
{
|
||||||
|
"chat_id": chat_id,
|
||||||
|
"message_id": int(message_id),
|
||||||
|
"reaction": [{"type": "emoji", "emoji": emoji}],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
async def _find_chat_id_by_title(self, chat_title: str) -> str | None:
|
async def _find_chat_id_by_title(self, chat_title: str) -> str | None:
|
||||||
normalized = self._normalize_title(chat_title)
|
normalized = self._normalize_title(chat_title)
|
||||||
if not normalized:
|
if not normalized:
|
||||||
|
|||||||
Reference in New Issue
Block a user