From 83730276bcf0c2e02975d5cd18887ae5533f886a Mon Sep 17 00:00:00 2001 From: Gabben <43146729+gabbhack@users.noreply.github.com> Date: Sun, 17 May 2020 16:50:49 +0500 Subject: [PATCH] Add ShippingQuery.answer --- aiogram/api/types/shipping_query.py | 25 ++++++++++++++++++- docs/api/methods/answer_shipping_query.md | 2 ++ docs/api/types/shipping_query.md | 14 +++++++++++ .../test_types/test_shipping_query.py | 24 ++++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 tests/test_api/test_types/test_shipping_query.py diff --git a/aiogram/api/types/shipping_query.py b/aiogram/api/types/shipping_query.py index a219be7c..b8228ce1 100644 --- a/aiogram/api/types/shipping_query.py +++ b/aiogram/api/types/shipping_query.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, List, Optional from pydantic import Field @@ -9,6 +9,8 @@ from .base import TelegramObject if TYPE_CHECKING: # pragma: no cover from .shipping_address import ShippingAddress from .user import User + from ..methods import AnswerShippingQuery + from ..types import ShippingOption class ShippingQuery(TelegramObject): @@ -26,3 +28,24 @@ class ShippingQuery(TelegramObject): """Bot specified invoice payload""" shipping_address: ShippingAddress """User specified shipping address""" + + def answer( + self, + ok: bool, + shipping_options: Optional[List[ShippingOption]] = None, + error_message: Optional[str] = None, + ) -> AnswerShippingQuery: + """ + :param ok: + :param shipping_options: + :param error_message: + :return: + """ + from ..methods import AnswerShippingQuery + + return AnswerShippingQuery( + shipping_query_id=self.id, + ok=ok, + shipping_options=shipping_options, + error_message=error_message, + ) diff --git a/docs/api/methods/answer_shipping_query.md b/docs/api/methods/answer_shipping_query.md index 6ac4948b..40437c42 100644 --- a/docs/api/methods/answer_shipping_query.md +++ b/docs/api/methods/answer_shipping_query.md @@ -58,3 +58,5 @@ return AnswerShippingQuery(...) - [Official documentation](https://core.telegram.org/bots/api#answershippingquery) - [aiogram.types.ShippingOption](../types/shipping_option.md) +- [aiogram.types.ShippingQuery](../types/shipping_query.md) +- [Aliases](../types/shipping_query.md#aliases) diff --git a/docs/api/types/shipping_query.md b/docs/api/types/shipping_query.md index 5b65a13d..95673673 100644 --- a/docs/api/types/shipping_query.md +++ b/docs/api/types/shipping_query.md @@ -22,8 +22,22 @@ This object contains information about an incoming shipping query. - `from aiogram.api.types import ShippingQuery` - `from aiogram.api.types.shipping_query import ShippingQuery` +## Aliases + +Aliases is always returns related API method (Awaitable) and can be used directly or as answer's into webhook. + +### Answer + +This method has the same specification with the API but without `callback_query_id` argument. + +| Answer method | Alias for | Description | +| - | - | - | +| `answer` | [Bot.answer_shipping_query](../methods/answer_shipping_query.md) | Answer to shipping query | + + ## Related pages: - [Official documentation](https://core.telegram.org/bots/api#shippingquery) - [aiogram.types.ShippingAddress](../types/shipping_address.md) - [aiogram.types.User](../types/user.md) +- [aiogram.methods.AnswerShippingQuery](../methods/answer_shipping_query.md) diff --git a/tests/test_api/test_types/test_shipping_query.py b/tests/test_api/test_types/test_shipping_query.py new file mode 100644 index 00000000..0d1eda8a --- /dev/null +++ b/tests/test_api/test_types/test_shipping_query.py @@ -0,0 +1,24 @@ +from aiogram.api.methods import AnswerShippingQuery +from aiogram.api.types import ShippingAddress, ShippingQuery, User + + +class TestInlineQuery: + def test_answer_alias(self): + shipping_query = ShippingQuery( + id="id", + from_user=User(id=42, is_bot=False, first_name="name"), + invoice_payload="payload", + shipping_address=ShippingAddress( + country_code="foo", + state="foo", + city="foo", + street_line1="foo", + street_line2="foo", + post_code="foo", + ), + ) + + api_method = shipping_query.answer(True) + + assert isinstance(api_method, AnswerShippingQuery) + assert api_method.shipping_query_id == shipping_query.id