Add files via upload

This commit is contained in:
Egor
2026-01-17 02:36:33 +03:00
committed by GitHub
parent 4599801f83
commit 8726e33665
2 changed files with 36 additions and 2 deletions

View File

@@ -2,7 +2,7 @@ from pathlib import Path
from typing import Any, Dict
from aiogram.exceptions import TelegramBadRequest
from aiogram.types import FSInputFile, InputMediaPhoto, Message
from aiogram.types import FSInputFile, InaccessibleMessage, InputMediaPhoto, Message
from app.config import settings
from app.localization.texts import get_texts
@@ -12,6 +12,8 @@ _PRIVACY_RESTRICTED_CODE = "BUTTON_USER_PRIVACY_RESTRICTED"
def is_qr_message(message: Message) -> bool:
if isinstance(message, InaccessibleMessage):
return False
return bool(message.caption and message.caption.startswith("\U0001F517 Ваша реферальная ссылка"))

View File

@@ -3,7 +3,7 @@ import logging
from aiogram import types
from aiogram.exceptions import TelegramBadRequest, TelegramNetworkError
from aiogram.types import FSInputFile, InputMediaPhoto
from aiogram.types import FSInputFile, InaccessibleMessage, InputMediaPhoto
from app.config import settings
from .message_patch import (
@@ -21,6 +21,9 @@ RETRY_DELAY = 0.5
def _resolve_media(message: types.Message):
# Если сообщение недоступно, возвращаем логотип по умолчанию
if isinstance(message, InaccessibleMessage):
return FSInputFile(LOGO_PATH)
# Всегда используем логотип если включен режим логотипа,
# кроме специальных случаев (QR сообщения)
if settings.ENABLE_LOGO_MODE and not is_qr_message(message):
@@ -81,6 +84,35 @@ async def edit_or_answer_photo(
force_text: bool = False,
) -> None:
resolved_parse_mode = parse_mode or "HTML"
# Если сообщение недоступно, отправляем новое сообщение
if isinstance(callback.message, InaccessibleMessage):
try:
if settings.ENABLE_LOGO_MODE and LOGO_PATH.exists():
await callback.message.answer_photo(
photo=FSInputFile(LOGO_PATH),
caption=caption,
reply_markup=keyboard,
parse_mode=resolved_parse_mode,
)
else:
await callback.message.answer(
caption,
reply_markup=keyboard,
parse_mode=resolved_parse_mode,
)
except Exception as e:
logger.warning("Не удалось отправить новое сообщение для InaccessibleMessage: %s", e)
try:
await callback.message.answer(
caption,
reply_markup=keyboard,
parse_mode=resolved_parse_mode,
)
except Exception:
pass
return
# Если режим логотипа выключен или требуется текстовое сообщение — работаем текстом
if force_text or not settings.ENABLE_LOGO_MODE:
try: