Добавление реакции пересылки в тг
This commit is contained in:
@@ -33,6 +33,7 @@ class MaxToTelegramBridge:
|
||||
# - если найден целевой Telegram-чат (не 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:
|
||||
logger.debug("Skip empty message %s/%s", parsed.chat_id, parsed.message_id)
|
||||
return
|
||||
|
||||
@@ -271,6 +271,16 @@ class TelegramToMaxBridge:
|
||||
logger.error("Cannot resolve MAX message id after sending media group (chat_id=%s)", max_chat_id)
|
||||
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:
|
||||
tid = str(m.get("message_id"))
|
||||
if tid:
|
||||
@@ -322,6 +332,12 @@ class TelegramToMaxBridge:
|
||||
logger.error("Cannot resolve MAX message id after sending (chat_id=%s)", max_chat_id)
|
||||
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(
|
||||
telegram_chat_id=telegram_chat_id,
|
||||
telegram_message_id=telegram_message_id,
|
||||
|
||||
@@ -120,6 +120,17 @@ class TelegramClient:
|
||||
raise TelegramApiError(f"Telegram getFile: missing file_path {data}")
|
||||
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:
|
||||
normalized = self._normalize_title(chat_title)
|
||||
if not normalized:
|
||||
|
||||
Reference in New Issue
Block a user