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
|
||||
arbitrary_types_allowed = True
|
||||
orm_mode = True
|
||||
smart_union = True # https://github.com/aiogram/aiogram/issues/901
|
||||
|
||||
@root_validator(pre=True)
|
||||
def remove_unset(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ from __future__ import annotations
|
|||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from .base import MutableTelegramObject
|
||||
|
||||
|
||||
|
|
@ -19,7 +21,7 @@ class ForceReply(MutableTelegramObject):
|
|||
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'"""
|
||||
input_field_placeholder: Optional[str] = None
|
||||
"""*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
|
||||
|
||||
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
|
||||
|
||||
pytestmark = pytest.mark.asyncio
|
||||
|
|
@ -43,3 +43,8 @@ class TestSendMessage:
|
|||
request: Request = bot.get_request()
|
||||
assert request.method == "sendMessage"
|
||||
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