Добавление реакции пересылки в тг

This commit is contained in:
kislovdm
2026-04-09 13:12:36 +03:00
parent 3bb81598d6
commit 70a5c36e57
3 changed files with 28 additions and 0 deletions
+1
View File
@@ -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
+16
View File
@@ -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,
+11
View File
@@ -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: