mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 18:19:34 +00:00
* #901 Fixed false-positive coercing of Union types in API methods * Added default value for force_reply
This commit is contained in:
parent
6ad242399b
commit
824b43c436
4 changed files with 11 additions and 2 deletions
1
CHANGES/901.bugfix.rst
Normal file
1
CHANGES/901.bugfix.rst
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Fixed false-positive coercing of Union types in API methods
|
||||||
|
|
@ -46,6 +46,7 @@ class TelegramMethod(abc.ABC, BaseModel, Generic[TelegramType]):
|
||||||
allow_population_by_field_name = True
|
allow_population_by_field_name = True
|
||||||
arbitrary_types_allowed = True
|
arbitrary_types_allowed = True
|
||||||
orm_mode = True
|
orm_mode = True
|
||||||
|
smart_union = True # https://github.com/aiogram/aiogram/issues/901
|
||||||
|
|
||||||
@root_validator(pre=True)
|
@root_validator(pre=True)
|
||||||
def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ from __future__ import annotations
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
from .base import MutableTelegramObject
|
from .base import MutableTelegramObject
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -19,7 +21,7 @@ class ForceReply(MutableTelegramObject):
|
||||||
Source: https://core.telegram.org/bots/api#forcereply
|
Source: https://core.telegram.org/bots/api#forcereply
|
||||||
"""
|
"""
|
||||||
|
|
||||||
force_reply: bool
|
force_reply: bool = Field(True, const=True)
|
||||||
"""Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'"""
|
"""Shows reply interface to the user, as if they manually selected the bot's message and tapped 'Reply'"""
|
||||||
input_field_placeholder: Optional[str] = None
|
input_field_placeholder: Optional[str] = None
|
||||||
"""*Optional*. The placeholder to be shown in the input field when the reply is active; 1-64 characters"""
|
"""*Optional*. The placeholder to be shown in the input field when the reply is active; 1-64 characters"""
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import datetime
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from aiogram.methods import Request, SendMessage
|
from aiogram.methods import Request, SendMessage
|
||||||
from aiogram.types import Chat, Message
|
from aiogram.types import Chat, ForceReply, Message
|
||||||
from tests.mocked_bot import MockedBot
|
from tests.mocked_bot import MockedBot
|
||||||
|
|
||||||
pytestmark = pytest.mark.asyncio
|
pytestmark = pytest.mark.asyncio
|
||||||
|
|
@ -43,3 +43,8 @@ class TestSendMessage:
|
||||||
request: Request = bot.get_request()
|
request: Request = bot.get_request()
|
||||||
assert request.method == "sendMessage"
|
assert request.method == "sendMessage"
|
||||||
assert response == prepare_result.result
|
assert response == prepare_result.result
|
||||||
|
|
||||||
|
async def test_force_reply(self):
|
||||||
|
# https://github.com/aiogram/aiogram/issues/901
|
||||||
|
method = SendMessage(text="test", chat_id=42, reply_markup=ForceReply())
|
||||||
|
assert isinstance(method.reply_markup, ForceReply)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue