From 8b2ae07ea01991000208c3fe5661c1aad36c5161 Mon Sep 17 00:00:00 2001 From: wulan17 Date: Wed, 26 Mar 2025 22:29:03 +0700 Subject: [PATCH] pyrofork: Refactor ShippingQuery Signed-off-by: wulan17 --- pyrogram/types/business/pre_checkout_query.py | 11 ++++---- pyrogram/types/business/shipping_option.py | 1 + pyrogram/types/business/shipping_query.py | 26 +++++++------------ 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/pyrogram/types/business/pre_checkout_query.py b/pyrogram/types/business/pre_checkout_query.py index 09f3bdaf..fad93171 100644 --- a/pyrogram/types/business/pre_checkout_query.py +++ b/pyrogram/types/business/pre_checkout_query.py @@ -17,14 +17,11 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrofork. If not, see . -from typing import Union, List, Match, Optional import pyrogram -from pyrogram import raw, enums -from pyrogram import types +from pyrogram import raw, types from ..object import Object from ..update import Update -from ... import utils class PreCheckoutQuery(Object, Update): @@ -76,7 +73,11 @@ class PreCheckoutQuery(Object, Update): self.payment_info = payment_info @staticmethod - async def _parse(client: "pyrogram.Client", pre_checkout_query, users) -> "PreCheckoutQuery": + async def _parse( + client: "pyrogram.Client", + pre_checkout_query: "raw.types.UpdateBotPrecheckoutQuery", + users + ) -> "PreCheckoutQuery": # Try to decode pre-checkout query payload into string. If that fails, fallback to bytes instead of decoding by # ignoring/replacing errors, this way, button clicks will still work. try: diff --git a/pyrogram/types/business/shipping_option.py b/pyrogram/types/business/shipping_option.py index a0fa1934..81f64124 100644 --- a/pyrogram/types/business/shipping_option.py +++ b/pyrogram/types/business/shipping_option.py @@ -1,5 +1,6 @@ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan # # This file is part of Pyrogram. # diff --git a/pyrogram/types/business/shipping_query.py b/pyrogram/types/business/shipping_query.py index 51926cd9..e7a8f61f 100644 --- a/pyrogram/types/business/shipping_query.py +++ b/pyrogram/types/business/shipping_query.py @@ -1,5 +1,6 @@ # Pyrogram - Telegram MTProto API Client Library for Python # Copyright (C) 2017-present Dan +# Copyright (C) 2022-present Mayuri-Chan # # This file is part of Pyrogram. # @@ -16,8 +17,6 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . -from typing import Union, Optional - import pyrogram from pyrogram import raw, types @@ -49,14 +48,14 @@ class ShippingQuery(Object, Update): client: "pyrogram.Client" = None, id: str, from_user: "types.User", - invoice_payload: str, + payload: str, shipping_address: "types.ShippingAddress" = None ): super().__init__(client) self.id = id self.from_user = from_user - self.invoice_payload = invoice_payload + self.payload = payload self.shipping_address = shipping_address @staticmethod @@ -72,19 +71,12 @@ class ShippingQuery(Object, Update): except (UnicodeDecodeError, AttributeError): payload = shipping_query.payload - return types.PreCheckoutQuery( - id=str(shipping_query.query_id), - from_user=types.User._parse(client, users[shipping_query.user_id]), - invoice_payload=payload, - shipping_address=types.ShippingAddress( - country_code=shipping_query.shipping_address.country_iso2, - state=shipping_query.shipping_address.state, - city=shipping_query.shipping_address.city, - street_line1=shipping_query.shipping_address.street_line1, - street_line2=shipping_query.shipping_address.street_line2, - post_code=shipping_query.shipping_address.post_code - ), - client=client + return ShippingQuery( + client=client, + id=shipping_query.query_id, + from_user=types.User._parse(client, shipping_query.user_id, users), + payload=payload, + shipping_address=types.ShippingAddress._parse(client, shipping_query.shipping_address) ) async def answer(