Fixed default LinkPreviewOptions JSON serialization (#1419)

* Fixed default link preview options serialization

* Added changelog
This commit is contained in:
Alex Root Junior 2024-02-17 10:10:50 +02:00 committed by GitHub
parent eef50a2edb
commit 53849b01a7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 3 deletions

2
CHANGES/1418.bugfix.rst Normal file
View file

@ -0,0 +1,2 @@
Fixed JSON serialization of the :code:`LinkPreviewOptions` class while it is passed
as bot-wide default options.

View file

@ -38,7 +38,7 @@ from aiogram.exceptions import (
from ...methods import Response, TelegramMethod
from ...methods.base import TelegramType
from ...types import InputFile
from ...types import InputFile, TelegramObject
from ..default import Default
from ..telegram import PRODUCTION, TelegramAPIServer
from .middlewares.manager import RequestMiddlewareManager
@ -233,7 +233,13 @@ class BaseSession(abc.ABC):
return str(round(value.timestamp()))
if isinstance(value, Enum):
return self.prepare_value(value.value, bot=bot, files=files)
if isinstance(value, TelegramObject):
return self.prepare_value(
value.model_dump(warnings=False),
bot=bot,
files=files,
_dumps_json=_dumps_json,
)
if _dumps_json:
return self.json_dumps(value)
return value

View file

@ -26,7 +26,7 @@ from aiogram.exceptions import (
TelegramUnauthorizedError,
)
from aiogram.methods import DeleteMessage, GetMe, TelegramMethod
from aiogram.types import UNSET_PARSE_MODE, User
from aiogram.types import UNSET_PARSE_MODE, User, LinkPreviewOptions
from aiogram.types.base import UNSET_DISABLE_WEB_PAGE_PREVIEW, UNSET_PROTECT_CONTENT
from tests.mocked_bot import MockedBot
@ -111,6 +111,10 @@ class TestBaseSession:
),
"1494994302",
],
[
{"link_preview": LinkPreviewOptions(is_disabled=True)},
'{"link_preview": {"is_disabled": true}}',
],
],
)
def test_prepare_value(self, value: Any, result: str, bot: MockedBot):